package thread;
import java.time.LocalTime;
import java.util.concurrent.TimeUnit;
/**
* 等待/通知機制
*
* @author lizhenmin
* @version v1.0
* @date 2018/8/21 9:28
*/
public class WaitNotify {
static boolean flag = true;
static Object lock = new Object();
public static void main(String[] args) throws InterruptedException {
Thread waitThread = new Thread(new Wait(), "WaitThread");
waitThread.start();
TimeUnit.SECONDS.sleep(1);
Thread notifyThread = new Thread(new Notify(), "NotifyThread");
notifyThread.start();
}
static class Wait implements Runnable {
@Override
public void run() {
// 加鎖馏慨,擁有l(wèi)ock的Monitor
synchronized (lock) {
// 條件不滿足時谣蠢,繼續(xù)wait主穗,同時釋放了lock的鎖
while (flag) {
try {
System.out.println(Thread.currentThread() + " flag is true. wait @ " + LocalTime.now());
lock.wait();
} catch (InterruptedException e) {
// do something
}
}
// 條件滿足時,完成工作
System.out.println(Thread.currentThread() + " flag is false. running @ " + LocalTime.now());
}
}
}
static class Notify implements Runnable {
@Override
public void run() {
// 加鎖拗秘,擁有l(wèi)ock的Monitor
synchronized (lock) {
// 獲取lock鎖坦弟,然后進行通知蹋辅,通知時不會釋放鎖
// 直到當前線程釋放了lock后照筑,WaitThread才能從wait方法中返回
System.out.println(Thread.currentThread() + " hold lock. notify @ " + LocalTime.now());
lock.notifyAll();
flag = false;
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
}
}
// 再次加鎖
synchronized (lock) {
System.out.println(Thread.currentThread() + " hold lock again. sleep @ " + LocalTime.now());
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
}
}
}
}
}
Thread等待通知機制
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門暖侨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崇渗,你說我怎么就攤上這事字逗。” “怎么了宅广?”我有些...
- 文/不壞的土叔 我叫張陵葫掉,是天一觀的道長。 經(jīng)常有香客問我跟狱,道長俭厚,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任驶臊,我火速辦了婚禮挪挤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘资铡。我一直安慰自己电禀,他們只是感情好幢码,可當我...
- 文/花漫 我一把揭開白布笤休。 她就那樣靜靜地躺著,像睡著了一般症副。 火紅的嫁衣襯著肌膚如雪店雅。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼琳袄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纺酸?” 一聲冷哼從身側(cè)響起窖逗,我...
- 正文 年R本政府宣布,位于F島的核電站橡类,受9級特大地震影響蛇尚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顾画,卻給世界環(huán)境...
- 文/蒙蒙 一取劫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧研侣,春花似錦谱邪、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至末誓,卻和暖如春扯俱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喇澡。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 一 、等待/通知機制介紹 兩線程存在生產(chǎn)和消費者關(guān)系榨惰,如while拜英,問題:不停輪詢機。浪費CPU琅催,間隔太大取不到居凶。...
- 在java多線程中可以使用object.wait/notify來進行線程之間的通訊 wait會使當前線程進入等待狀...
- 原創(chuàng)文章&經(jīng)驗總結(jié)&從校招到A廠一路陽光一路滄桑 詳情請戳www.codercc.com 1.Condition簡...
- Java的等待/通知 機制虫给,舉例來說就是,線程A侠碧,拿到了對象object的鎖抹估,并且調(diào)用了object的wait()...