国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

wait和sleep的區別

2019-11-10 18:29:33
字體:
來源:轉載
供稿:網友
1、這兩個方法來自不同的類分別是Thread和Object2、最主要是sleep方法沒有釋放鎖,而 wait 方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用(使用范圍) synchronized(x){       x.notify()       //或者wait() }

4、sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常

sleep方法屬于Thread類中方法,表示讓一個線程進入睡眠狀態,等待一定的時間之后,自動醒來進入到可運行狀態,不會馬上進入運行狀態,因為線程調度機制恢復線程的運行也需要時間,一個線程對象調用了sleep方法之后,并不會釋放他所持有的所有對象鎖,所以也就不會影響其他進程對象的運行。但在sleep的過程中有可能被其他對象調用它的interrupt(),產生InterruptedException異常,如果你的程序不捕獲這個異常,線程就會異常終止,進入TERMINATED狀態,如果你的程序捕獲了這個異常,那么程序就會繼續執行catch語句塊(可能還有finally語句塊)以及以后的代碼。

  注意sleep()方法是一個靜態方法,也就是說他只對當前對象有效,通過t.sleep()讓t對象進入sleep,這樣的做法是錯誤的,它只會是使當前線程被sleep 而不是t線程。

wait屬于Object的成員方法,一旦一個對象調用了wait方法,必須要采用notify()和notifyAll()方法喚醒該進程;如果線程擁有某個或某些對象的同步鎖,那么在調用了wait()后,這個線程就會釋放它持有的所有同步資源,而不限于這個被調用了wait()方法的對象。wait()方法也同樣會在wait的過程中有可能被其他對象調用interrupt()方法而產生InterruptedException,效果以及處理方式同sleep()方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑日县| 建瓯市| 南昌市| 阳山县| 望谟县| 白沙| 大洼县| 新田县| 永登县| 平远县| 明水县| 阜城县| 临颍县| 宁都县| 长乐市| 凤阳县| 彰化县| 兴义市| 集贤县| 崇文区| 嵊州市| 曲麻莱县| 吴堡县| 沐川县| 怀柔区| 河北区| 察雅县| 北票市| 绥芬河市| 镇安县| 南开区| 四川省| 枣阳市| 海盐县| 维西| 湘乡市| 墨玉县| 翁牛特旗| 鄂尔多斯市| 乌拉特中旗| 英超|