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

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

wait和sleep的區別

2019-11-10 18:53:40
字體:
來源:轉載
供稿:網友
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()方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深泽县| 陈巴尔虎旗| 瓮安县| 浙江省| 萝北县| 襄垣县| 滦南县| 阳谷县| 壶关县| 山西省| 靖边县| 北票市| 宝丰县| 濮阳市| 仙居县| 兴宁市| 都江堰市| 滦平县| 商洛市| 东海县| 通辽市| 万宁市| 吴桥县| 青阳县| 南阳市| 于都县| 越西县| 普定县| 武隆县| 区。| 北流市| 建宁县| 松江区| 绥滨县| 仁布县| 宁乡县| 皋兰县| 疏勒县| 丰城市| 闽侯县| 盖州市|