Java中wait 與notify 方法的使用

2021-08-18 19:47:59 字數 753 閱讀 2523

wait()、notify()方法介紹

1、wait()方法:讓當前執行緒(持有鎖的執行緒)處於等待(阻塞)的狀態,並且釋放它持有的鎖。該執行緒將處於阻塞狀態,直到其它執行緒呼叫notify()或者notifyall()方法喚醒,執行緒進入就緒狀態。

2、wait(long):讓當前執行緒(持有鎖的執行緒)處於等待(阻塞)的狀態,直到其它執行緒呼叫notify()或者notifyall()方法或者超過指定的時間,執行緒進入就緒狀態。

3、notify():喚醒持有鎖上的其中乙個執行緒。讓那個執行緒從等待狀態變成就緒狀態。

4、notifyall():喚醒持有鎖上的所有執行緒。讓執行緒從等待狀態變成就緒狀態。

示例

public class threaddemo extends thread

public void run() catch (exception e)

} } }

public static void main(string args)

}

執行結果:

thread1-----run

thread2-----run

thread1-----run

thread2-----run

thread1-----run

thread2-----run

thread1-----run

thread2-----run

thread1-----run

Java中sleep 與wait 區別

1 每個物件都有乙個鎖來控制同步訪問,synchronized關鍵字可以和物件的鎖互動,來實現同步方法或同步塊。sleep 方法正在執行的執行緒主動讓出cpu 然後cpu就可以去執行其他任務 在sleep指定時間後cpu再回到該執行緒繼續往下執行 注意 sleep方法只讓出了cpu,而並不會釋放同步...

Java 中sleep與wait的區別

1 這兩個方法來自不同的類分別是thread和object 2 最主要是sleep方法沒有釋放鎖,而 wait 方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用 使用範圍 s...

Java中的sleep與wait 區分

這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wait...