執行緒中sleep 和wait 的區別

2021-10-02 19:23:11 字數 1390 閱讀 7921

建立service類:

public

class

service

catch

(exception e)}}

public

void

xwait()

}}

.

sleepthread類:

//呼叫service中的xsleep方法

public

class

sleepthread

implements

runnable

public

void

run(

)}

.

waitthread類:

public

class

waitthread

implements

runnable

public

void

run(

)}

.

測試test類:

public

class

test

}

執行結果:

waitthread執行緒等待著sleepthread執行緒進入休眠狀態休眠3秒後,並且執行結束後,釋放了鎖,才得以執行。故得到:sleep()休眠的時候並沒有釋放鎖。

修改service類:

public

class

service

catch

(exception e)}}

public

void

xwait()

catch

(exception e)}}

}

.

test類:

public

class

test

}

執行結果:

waitthread執行緒啟動起來,然後waitthread執行緒呼叫了wait()方法進入等待狀態,並且釋放了鎖,sleepthread執行緒獲取鎖呼叫了service中的sleep()方法進入休眠

狀態,三秒之後休眠結束,呼叫notifyall()喚醒waitthread執行緒,執行之後釋放鎖,結束業務!故得到呼叫wait()方法會釋放鎖

執行緒中sleep和wait的區別

1,這兩個方法來自不同的類分別是thread和object 2,最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法 3,wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何時候都可以使用 4,sle...

執行緒休眠sleep和wait

我們都知道,休眠執行緒有兩種方法,那就是sleep 和wait 先簡單了解一下這兩個方法 1.sleep 是thread裡的方法 static修飾,類名.呼叫即可 設定的時間一到,自動會醒過來繼續執行 2.wait 是object裡的方法 必須用notify或者notifyall來喚醒 在看黑馬程式...

執行緒sleep 和wait 的區別

1 這兩個方法來自不同的類分別是thread和object 2 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用 使用範圍 4 s...