• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>知識大全>知識百科>百科知識>

    Java中sleep與wait的區別

    時間: 映芳735 分享

      Java中sleep和wait都是用來進行線程控制的,這兩者之間有什么區別呢?下面,學習啦小編帶你去了解一下sleep與wait的區別。

      sleep與wait在用法上的區別

      sleep()不釋放同步鎖,wait()釋放同步縮。

      sleep(milliseconds)可以用時間指定來使他自動醒過來,如果時間不到你只能調用interreput()來強行打斷。

      wait()可以用notify()直接喚起。

      sleep與wait在作用上的區別

      sleep是Thread類的靜態方法。sleep的作用是讓線程休眠制定的時間,在時間到達時恢復,也就是說sleep將在接到時間到達事件事恢復線程執行。例如:

      try{

      System.out.println("I'm going to bed");

      Thread.sleep(1000);

      System.out.println("I wake up");

      }

      catch(IntrruptedException e) {

      }

      wait是Object的方法,也就是說可以對任意一個對象調用wait方法,調用wait方法將會將調用者的線程掛起,直到其他線程調用同一個對象的notify方法才會重新激活調用者。例如:

      //Thread 1

      try{

      obj.wait();//suspend thread until obj.notify() is called

      }

      catch(InterrputedException e) {

      }

      sleep與wait在本質上的區別

      sleep()是讓某個線程暫停運行一段時間,其控制范圍是由當前線程決定,也就是說,在線程里面決定.好比如說,我要做的事情是 "點火->燒水->煮面",而當我點完火之后我不立即燒水,我要休息一段時間再燒.對于運行的主動權是由我的流程來控制.

      而wait(),首先,這是由某個確定的對象來調用的,將這個對象理解成一個傳話的人,當這個人在某個線程里面說"暫停!",也是 thisOBJ.wait(),這里的暫停是阻塞,還是"點火->燒水->煮飯",thisOBJ就好比一個監督我的人站在我旁邊,本來該線程應該執行1后執行2,再執行3,而在2處被那個對象喊暫停,那么我就會一直等在這里而不執行3,但這個流程并沒有結束,我一直想去煮飯,但還沒被允許, 直到那個對象在某個地方說"通知暫停的線程啟動!",也就是thisOBJ.notify()的時候,那么我就可以煮飯了,這個被暫停的線程就會從暫停處繼續執行.

      其實兩者都可以讓線程暫停一段時間,但是本質的區別是一個線程的運行狀態控制,一個是線程之間的通訊的問題

      在java.lang.Thread類中,提供了sleep(),

      而java.lang.Object類中提供了wait(), notify()和notifyAll()方法來操作線程

      sleep()可以將一個線程睡眠,參數可以指定一個時間。

      而wait()可以將一個線程掛起,直到超時或者該線程被喚醒。

      wait有兩種形式wait()和wait(milliseconds).

      小編總結:sleep和wait的區別

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

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

      3、wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用。

      synchronized(x){

      x.notify()

      //或者wait()

      }

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

    Java中sleep與wait的區別

    Java中sleep和wait都是用來進行線程控制的,這兩者之間有什么區別呢?下面,學習啦小編帶你去了解一下sleep與wait的區別。 sleep與wait在用法上的區別 sleep()不釋放同步鎖,wait()釋放同步縮。 sleep(milliseconds)可以用時間指定來使他
    推薦度:
    點擊下載文檔文檔為doc格式

    精選文章

    • 會計證丟了怎么辦補辦的方法
      會計證丟了怎么辦補辦的方法

      會計證,是具有一定會計專業知識和技能人員從事會計工作的資格證書,是進入會計崗位的準入證。會計證丟了不用著急,不用擔心會重考。今天小編就給

    • 類方法和實例方法的區別有哪些
      類方法和實例方法的區別有哪些

      我們已經知道類體中的方法分為實例方法和類方法兩種,用static修飾的是類方法。下面小編跟大家講講類方法和實例方法的區別,一起來看看。 類方法和實

    • 財務管理專業怎樣
      財務管理專業怎樣

      很多人在面臨專業選擇時,陷入了選擇恐懼癥,不知道自己愛什么,不知道自己適合什么。可以說選好一個專業,就是你一生的財富。下面由學習啦小編為

    • 值類型和引用類型的區別是什么
      值類型和引用類型的區別是什么

      值類型和引用類型經常出現在JAVA等編程語言的書籍中,一些學習java的新手不是很懂這兩者的區別,下面小編為大家介紹值類型和引用類型的區別,感興趣

    537124 主站蜘蛛池模板: 99re5久久在热线播放| 啊灬啊灬啊灬快灬性| 北岛玲日韩精品一区二区三区| 亚洲精品国产av成拍色拍| 亚洲AV无码专区国产乱码DVD| 中文字幕第315页| www.五月天婷婷| 五月激情丁香网| 精品视频午夜一区二区| 正点嫩模大尺度写真在线视频| 极品人体西西44f大尺度| 成人国产欧美精品一区二区| 国产视频一区二区三区四区| 国产人成777在线视频直播| 免费人成激情视频在线观看冫| 亚洲gv天堂gv无码男同| 久久久国产精品亚洲一区| а√天堂资源8在线官网在线| 天天影院成人免费观看| 精品三级66在线播放| 日韩精品无码中文字幕一区二区| 好大好爽好舒服视频| 国产成人免费a在线资源| 人妻在线无码一区二区三区| 久久福利视频导航| av在线亚洲男人的天堂| 西西大胆午夜人体视频| 特区爱奴在线观看| 日本熟妇色熟妇在线视频播放| 国产男女猛烈无遮挡免费视频网站 | gav男人天堂| 能顺利播放的男男网站free| 欧美xxx高清| 在线观看91精品国产入口| 午夜爽爽爽视频| 亚洲1区1区3区4区产品乱码芒果 | 欧美黑人bbbbbbbbb| 精品亚洲一区二区三区在线播放| 日韩一卡2卡3卡4卡| 国产欧美va欧美va香蕉在线观看| 亚洲一区二区三区高清|