1. 程式人生 > >關於多執行緒的sleep和wait

關於多執行緒的sleep和wait

對於sleep()方法,我們首先要知道該方法是屬於Thread類中的。而wait()方法,則是屬於Object類中的。

sleep()方法導致了程式暫停執行指定的時間,讓出cpu該其他執行緒,但是他的監控狀態依然保持者,當指定的時間到了又會自動恢復執行狀態。

在呼叫sleep()方法的過程中,執行緒不會釋放物件鎖。

而當呼叫wait()方法的時候,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫notify()方法後本執行緒才進入物件鎖定池準備

獲取物件鎖進入執行狀態。

連結:http://www.cnblogs.com/hongten/p/hongten_java_sleep_wait.html

相關推薦

Java 執行sleep() wait()的區別

sleep(休眠) 和 wait(等待) 方法是 Java 多執行緒中常用的兩個方法 區別1:使用限制 使用 sleep 方法可以讓當前執行緒休眠,時間一到當前執行緒繼續往下執行,在任何地方都能使用

java---執行sleep()setPriority()方法

package ThreadIO2_1.Thread.schedule.v1; public class MyRunner extends Thread { private static Obje

Java常用面試題14 如何暫停執行SleepWait 你能分清楚嗎?

問: Thread類的sleep()方法和Object類的wait()方法都可以讓執行緒暫停執行,它們有什麼區別?  答: sleep()方法(休眠)是執行緒類(Thread)的靜態方法,呼叫此方法會讓當前執行緒暫停執行指定的時間,將執行機會(CPU)讓給其他執行緒,但是

執行通訊(waitnotify)

        import java.util.ArrayList; import java.util.List; public class ListAdd1 { private volatile static List list = new

執行sleep物件wait一段時間的區別

它們的區別主要考慮兩點:1.cpu是否繼續執行、2.鎖是否釋放掉。 對於這兩點,首先解釋下cpu是否繼續執行的含義:cpu為每個執行緒劃分時間片去執行,每個時間片時間都很短,cpu不停地切換不同的執行緒,以看似他們好像同時執行的效果。 其次解釋下鎖是否釋放的含義:鎖如果被佔

執行中的waitsleep到底誰釋放了鎖

首先,多執行緒中會使用到兩個延遲的函式,wait和sleep。 wait是Object類中的方法,而sleep是Thread類中的方法。 sleep是Thread類中的靜態方法。無論是在a執行緒中呼

Java執行之 使用waitnotify實現生產者消費者模型

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

執行中的wait()notify()方法

wait()和notify()方法屬於Object類中的方法,是用於對執行緒之間進行資源物件鎖的通訊,其必須在synchronized(Obj){...}語法塊內 wait()就是說執行緒在獲取物件鎖後,主動釋放物件鎖,同時本執行緒進行休眠。直到有其它執行緒呼叫該物件的no

Android進階——執行系列之wait、notify、sleep、join、yield、synchronized關鍵字、ReentrantLock鎖

前言 多執行緒一直是初學者最困惑的地方,每次看到一篇文章,覺得很有難度,就馬上叉掉,不看了,我以前也是這樣過來的。後來,我發現這樣的態度不行,知難而退,永遠進步不了。於是,我狠下心來看完別人的部落格,儘管很難但還是咬著牙,不懂去查閱資料,到最後弄懂整個過程。雖

Java 執行 joininterrupt 方法

簡述: 使用Java多執行緒中join和interrupt函式 《Java程式設計思想》 P669 ~ P670 一個執行緒可以再其他執行緒上呼叫join()方法,其效果是等待一段時間直到第二個執行緒結束才繼續執行。 如果某個執行緒在另一個執行緒t上呼叫t.join(), 此

執行--thisThread.currentThread()詳解

在看多執行緒程式設計核心技術的時候,有一段程式碼讓我很困惑,所以在這裡記錄一下。 public class isalive { public static void main(String[] args) { // TODO Auto-generated method stub //T

談談執行RunnableCallable介面

Runnable介面程式碼 public interface Runnable { public abstract void run(); } Callable介面程式碼 public interface Callable<V> { V c

#Java執行知識點總結wait、notify、notifyAll

Java多執行緒 設計一個典型的場景,來闡述wait()、notify()、notifyAll(),生產消費者。 有生產者、消費者、緩衝佇列(size=10)。 生產者不停地向緩衝佇列裡放資料,一旦佇列滿了,則wait(),並notify()消費者進行處理。 消費者不停地從緩衝佇列裡

Java執行學習之wait、notify/notifyAll 詳解

轉載 https://www.cnblogs.com/moongeek/p/7631447.html 1、wait()、notify/notifyAll() 方法是Object的本地final方法,無法被重寫。 2、wait()使當前執行緒阻塞,前提是 必須先獲

C# 執行啟動管理 單例模式

1.          List<Task> taskList = new List<Task>();             TaskFactory t

Qt修煉手冊11_執行程式設計QThread類

1.事件迴圈 學習QT多執行緒程式設計之前,有必要先熟悉事件迴圈的概念。 先看一個單執行緒介面程式的主函式程式碼: int main(int argc, char* argv[]) {   QApplication app(argc,  argv);   // 構造主視

Android執行-----併發同步(volatile)

volatile是Java提供的一種輕量級的同步機制,在併發程式設計中,它也扮演著比較重要的角色。同synchronized相比(synchronized通常稱為重量級鎖),volatile更輕量級,相比使用synchronized所帶來的龐大開銷,倘若能恰當的合理的使用volatile,自然是好事

Android執行-----併發同步(Lock)

一、為什麼需要Lock 如果一個程式碼塊被synchronized修飾了,當一個執行緒獲取了對應的鎖,並執行該程式碼塊時,其他執行緒便只能一直等待,等待獲取鎖的執行緒釋放鎖,而這裡獲取鎖的執行緒釋放鎖只會有兩種情況: 1)獲取鎖的執行緒執行完了該程式碼塊,然後執行緒釋放對鎖的佔有; 2)執行緒執

Android執行-----併發同步(synchronized)

一、鎖 物件的內建鎖和物件的狀態之間是沒有內在的關聯的,雖然大多數類都將內建鎖用做一種有效的加鎖機制,但物件的域並不一定通過內建鎖來保護。當獲取到與物件關聯的內建鎖時,並不能阻止其他執行緒訪問該物件,當某個執行緒獲得物件的鎖之後,只能阻止其他執行緒獲得同一個鎖。之所以每個物件都有一個內建鎖,是為

Android執行-----併發同步(ThreadLocal)

一.對ThreadLocal的理解        很多地方叫做執行緒本地變數,也有些地方叫做執行緒本地儲存,其實意思差不多。可能很多朋友都知道ThreadLocal為變數在每個執行緒中都建立了一個副本,那麼每個執行緒可以訪問自己內部的副本變數,也就是進行資