国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java中wait()與sleep()的區(qū)別

seanHai / 2262人閱讀

摘要:期間對象鎖是釋放的調(diào)用的時候鎖并沒有被釋放,調(diào)用也屬于這種情況一般而言,用于線程間的通信,用于線程狀態(tài)的控制參考資料

  

最近在做面試題的時候看到這道題,復習了一遍《Thinking in Java》,在此記錄這個答案

類的區(qū)別

wait()來自于 java.lang.Object,任何對象都有此方法

sleep()來自于 java.lang.Thread,調(diào)用的對象為線程

用法上的區(qū)別

看一下jdk的描述:

  

wait():Causes the current thread to wait until either another thread invokes the
java.lang.Object.notify() method or the java.lang.Object.notifyAll()method for this object, or a specified amount of time has elapsed.

使當前線程掛起,當對象調(diào)用java.lang.Object.notify()或者java.lang.Object.notifyAll()或者時間到期,則從wait()中恢復執(zhí)行

  

sleep():Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers. The thread does not lose ownership of any monitors.

在指定的時間內(nèi)使當前執(zhí)行的線程睡眠(暫停執(zhí)行)

同步與鎖的不同

wait()與sleep()最主要的區(qū)別就在于同步與鎖,wiat()必須放在synchronized block中,否則會在program runtime時扔出java.lang.IllegalMonitorStateException異常。

wait()期間對象鎖是釋放的

調(diào)用sleep()的時候鎖并沒有被釋放,調(diào)用yield()也屬于這種情況

synchronized(LOCK) {   
    Thread.sleep(1000); // LOCK is held
}

synchronized(LOCK) {   
    LOCK.wait(); // LOCK is not held
}

一般而言,wait()用于線程間的通信,sleep()用于線程狀態(tài)的控制

參考資料

http://stackoverflow.com/questions/1036754/difference-between-wait-and...
http://howtodoinjava.com/2013/03/08/difference-between-sleep-and-wait/
http://www.qat.com/using-waitnotify-instead-thread-sleep-java/

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64300.html

相關(guān)文章

  • sleep( ) 和 wait( ) 這 5 個區(qū)別,你知道幾個?

    摘要:休眠和等待方法是多線程中常用的兩個方法,它們有什么區(qū)別及一些該注意的地方有哪些呢下面給大家一一分解。區(qū)別使用場景一般用于當前線程休眠,或者輪循暫停操作,則多用于多線程之間的通信。 sleep(休眠) 和 wait(等待) 方法是 Java 多線程中常用的兩個方法,它們有什么區(qū)別及一些該注意的地方有哪些呢?下面給大家一一分解。 區(qū)別1:使用限制 使用 sleep 方法可以讓讓當前線程休眠...

    EscapedDog 評論0 收藏0
  • Java 多線程核心技術(shù)梳理(附源碼)

    摘要:本文對多線程基礎(chǔ)知識進行梳理,主要包括多線程的基本使用,對象及變量的并發(fā)訪問,線程間通信,的使用,定時器,單例模式,以及線程狀態(tài)與線程組。源碼采用構(gòu)建,多線程這部分源碼位于模塊中。通知可能等待該對象的對象鎖的其他線程。 本文對多線程基礎(chǔ)知識進行梳理,主要包括多線程的基本使用,對象及變量的并發(fā)訪問,線程間通信,lock的使用,定時器,單例模式,以及線程狀態(tài)與線程組。 寫在前面 花了一周時...

    Winer 評論0 收藏0
  • bat等大公司常考java多線程面試題

    摘要:典型地,和被用在等待另一個線程產(chǎn)生的結(jié)果的情形測試發(fā)現(xiàn)結(jié)果還沒有產(chǎn)生后,讓線程阻塞,另一個線程產(chǎn)生了結(jié)果后,調(diào)用使其恢復。使當前線程放棄當前已經(jīng)分得的時間,但不使當前線程阻塞,即線程仍處于可執(zhí)行狀態(tài),隨時可能再次分得時間。 1、說說進程,線程,協(xié)程之間的區(qū)別 簡而言之,進程是程序運行和資源分配的基本單位,一個程序至少有一個進程,一個進程至少有一個線程.進程在執(zhí)行過程中擁有獨立的內(nèi)存單元...

    Charlie_Jade 評論0 收藏0
  • 一起學并發(fā)編程 - sleepwait差異

    摘要:一般差異簡單來說,是一個用于線程同步的實例方法。暫停當前線程,不釋放任何鎖。用來線程間通信,使擁有該對象鎖的線程等待直到指定時間或。執(zhí)行對該對象加的同步代碼塊。 在JAVA的學習中,不少人會把sleep和wait搞混,認為都是做線程的等待,下面主要介紹下這倆者是什么,及了解它們之間的差異和相似之處。 一般差異 簡單來說,wait()是一個用于線程同步的實例方法。因為定義在java.l...

    noONE 評論0 收藏0
  • Thread類源碼解讀(2)——線程狀態(tài)及常用方法

    摘要:如果線程還存活,線程就無限期等待,并讓出監(jiān)視器鎖,進入狀態(tài)。當線程從狀態(tài)被喚醒后通過,或者是假喚醒將繼續(xù)競爭監(jiān)視器鎖,當成功獲得監(jiān)視器鎖后,他將從調(diào)用的地方恢復,繼續(xù)運行。 前言 系列文章目錄 上一篇我們討論了線程的創(chuàng)建,本篇我們來聊一聊線程的狀態(tài)轉(zhuǎn)換以及常用的幾個比較重要的方法。 本篇依然是通過源碼分析來了解這些知識。 本文源碼基于jdk1.8 。 閱讀完本文,你應當有能力回答以...

    luqiuwen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<