Hopes

          Start Here..

           

          java object的wait和Thread的sleep方法區別

          java object的wait和Thread的sleep方法區別

          1、這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object類。

          sleep是Thread的靜態類方法,誰調用的誰去睡覺,即使在a線程里調用了b的sleep方法,實際上還是a去睡覺,要讓b線程睡覺要在b的代碼中調用sleep。


          2、最主要sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。

          sleep不出讓系統資源;wait是進入線程等待池等待,出讓系統資源,其他線程可以占用CPU。一般wait不會加時間限制,因為如果wait線程的運行資源不夠,再出來也沒用,要等待其他線程調用notify/notifyAll喚醒等待池中的所有線程,才會進入就緒隊列等待OS分配系統資源。sleep(milliseconds)可以用時間指定使它自動喚醒過來,如果時間不到只能調用interrupt()強行打斷。

          Thread.Sleep(0)的作用是“觸發操作系統立刻重新進行一次CPU競爭”。


          3、使用范圍:wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用
             synchronized(x){
                x.notify()
               //或者wait()
             }


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

          posted on 2013-11-07 11:10 ** 閱讀(210) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 福建省| 绍兴市| 金坛市| 桑植县| 峨山| 云梦县| 云龙县| 黄大仙区| 北辰区| 海林市| 和林格尔县| 文山县| 八宿县| 黄浦区| 长兴县| 临安市| 盖州市| 灵寿县| 南投市| 定兴县| 安多县| 邵东县| 包头市| 永宁县| 桐梓县| 明光市| 延安市| 宣城市| 禄丰县| 海城市| 揭西县| 巍山| 屏南县| 姚安县| 阿巴嘎旗| 夹江县| 亚东县| 托克逊县| 武清区| 康保县| 青龙|