日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java多線程基礎 線程的等待與喚醒

瀏覽:135日期:2022-09-05 14:18:41

題圖:花啡,豆是買咖啡機送的,花是上周陽朔旅游買的桂花,給它起了個名字,叫 Sunday。

咖啡味淡了一點點,多了一份桂花的清香。

本篇我們來研究一下 wait() notify() notifyAll() 。

DEMO1: wait() 與 notify()

public class Test { static class ThreadOne extends Thread {private Callback mCallback;@Overridepublic void run() { work(); if (mCallback != null) {mCallback.onResult(false); }}// 耗時 3sprivate void work() { System.out.println(' 正在查詢數(shù)據(jù)庫 1'); long startTime = System.currentTimeMillis(); while (true) {if (System.currentTimeMillis() - startTime < 3000) { continue;}break; }}public void setCallback(Callback callback) { mCallback = callback;}public interface Callback { void onResult(boolean result);} } static class ThreadTest extends Thread {private Object mLock = new Object();private ThreadOne mThreadOne;@Overridepublic void run() { workOne(); System.out.println(' 根據(jù)結果繼續(xù)做其他事情 ');}private void workOne() { mThreadOne = new ThreadOne(); mThreadOne.setCallback(new ThreadOne.Callback() {@Overridepublic void onResult(boolean result) { System.out.println(' 查詢數(shù)據(jù)庫 1 結束,:' + (result ? ' 有數(shù)據(jù) ' : ' 無數(shù)據(jù) ')); synchronized (mLock) {mLock.notify();System.out.println('--ThreadTest 結束等待 --'); }} }); mThreadOne.start(); try {synchronized (mLock) { System.out.println('--ThreadTest 進入等待 --'); mLock.wait();} } catch (InterruptedException e) {e.printStackTrace(); }} } public static void main(String[] var0) {ThreadTest threadTest = new ThreadTest();threadTest.start(); }}

DEMO1 輸出:

--ThreadTest 進入等待--正在查詢數(shù)據(jù)庫 1查詢數(shù)據(jù)庫 1 結束,: 無數(shù)據(jù)--ThreadTest 結束等待--根據(jù)結果繼續(xù)做其他事情

注意:

使用 wait() 和 notify() 必須在獲得同步鎖后才能調用,若直接調用會報 java.lang.IllegalMonitorStateException 錯誤,因為狀態(tài)由同步鎖保護。

wait() 不同于 sleep() 的是 wait() 會釋放同步鎖。

因為 wait() 和 notify() 是基于同步鎖實現(xiàn)的,每個對象都有自己的同步鎖,所以 wait() 和 notify() 是 Object 的方法,而不是 Thread。

DEMO2,wait() 與 notifyAll():

public class Test { private static Object mLock = new Object(); static class MyThread extends Thread {String mName;Callback mCallback;public MyThread(String name){ mName = name;}@Overridepublic void run() { work(); if (mCallback != null) {mCallback.onResult(false); }}// 耗時 3sprivate void work() { System.out.println(mName + ' 等待 '); try {synchronized (mLock) { mLock.wait();} } catch (InterruptedException e) {e.printStackTrace(); }}public void setCallback(Callback callback) { mCallback = callback;}public interface Callback { void onResult(boolean result);} } static class ThreadTest extends Thread {@Overridepublic void run() { work('db1'); work('db2'); work('db3'); try {sleep(2000); } catch (InterruptedException e) {e.printStackTrace(); } synchronized (mLock) {System.out.println(' 喚醒全部 ');mLock.notifyAll(); }}private void work(String name) { final MyThread myThread = new MyThread(name); myThread.setCallback(new MyThread.Callback() {@Overridepublic void onResult(boolean result) { System.out.println(myThread.mName + ' 回來了 ');} }); myThread.start();} } public static void main(String[] var0) {ThreadTest threadTest = new ThreadTest();threadTest.start(); }}

DEMO2 輸出:

db1 等待db3 等待db2 等待喚醒全部db3 回來了db1 回來了db2 回來了

同一個對象的 wait() 方法可多次在不同的線程中調用,可讓不同的線程進入等待(阻塞),可以一個一個 notify(),也可以調用 notifyAll() 一次性全部喚醒。

來自:http://hackeris.me/2017/05/07/thread_base_1/

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩少妇| 日韩精品视频网| 日本欧美在线| 欧美日韩黄网站| 蜜桃久久久久| 亚洲午夜电影| 久久精品国产99国产| 欧美日韩四区| 久久久久欧美精品| 欧美韩一区二区| 久久国产人妖系列| 日韩在线黄色| 男女性色大片免费观看一区二区 | 精品视频自拍| 日本伊人久久| 在线精品一区二区| 中文欧美日韩| 亚洲午夜黄色| www成人在线视频| 蜜桃久久久久| 国产日产一区| 国产二区精品| 国产91精品对白在线播放| 日韩成人精品一区二区| 精品视频亚洲| 欧美国产专区| 久久成人高清| 91欧美精品| 男女激情视频一区| 一区二区国产精品| 另类av一区二区| 亚洲欧洲另类| 国产视频久久| 丝袜脚交一区二区| 欧美日韩国产亚洲一区| 欧美理论视频| 欧美成人精品| 欧美日韩国产高清| 国产高清一区二区| 国产韩日影视精品| 夜久久久久久| 亚洲人成在线影院| 日韩影片在线观看| 综合亚洲色图| 日韩在线成人| 国产精品亚洲综合久久| 久久不卡国产精品一区二区| 精品中文在线| 欧产日产国产精品视频| 亚洲天堂1区| 99久久精品国产亚洲精品| 免费成人网www| 蜜桃伊人久久| 日本精品另类| 久久不见久久见中文字幕免费 | 亚洲一区二区av| 国产精品一级| 久久精品亚洲一区二区| 香蕉成人久久| 99久久精品网| 亚洲欧美不卡| 色综合视频一区二区三区日韩| 欧美亚洲国产日韩| 亚洲综合福利| 久久天堂影院| 久久中文字幕av一区二区不卡| 伊人久久大香线蕉av超碰演员| 亚洲精品在线观看91| 亚洲制服欧美另类| 欧美久久一区二区三区| 国产一区二区三区免费在线| 精品久久久久中文字幕小说| 色综合www| 日韩午夜一区| 一区二区91| 国产精品美女久久久久久不卡| av免费不卡国产观看| 日韩视频精品在线观看| 国产日韩一区二区三区在线| 欧美丰满日韩| 免费看av不卡| 欧美女激情福利| 精品日本视频| 日韩在线免费| 亚洲伊人精品酒店| 国产精品porn| 日韩免费在线| 亚洲一区二区三区四区电影 | 国产一区二区三区久久久久久久久| 国产一区亚洲| 91p九色成人| 91嫩草亚洲精品| 亚洲香蕉久久| 国产精品国产三级国产在线观看| 亚洲一区二区成人| 国产精品极品在线观看| a国产在线视频| 日韩在线播放一区二区| 国产乱码精品一区二区三区亚洲人 | 久久精品国产99国产精品| 亚洲日本三级| 中文在线一区| 91精品啪在线观看国产18| 欧美国产日韩电影| 日韩精品成人在线观看| 亚洲一区黄色| av资源新版天堂在线| 国产精品videossex| 日韩三级精品| 综合激情一区| 老牛国产精品一区的观看方式| 亚洲电影在线| 日韩精品一区二区三区免费观影 | 欧美日韩在线二区| 伊人久久在线| 国产一区二区三区四区二区| 欧美日韩一视频区二区| 深夜福利亚洲| 在线免费观看亚洲| 三级一区在线视频先锋| 久久性天堂网| 羞羞答答国产精品www一本| 亚洲一区二区三区免费在线观看| 伊人久久亚洲影院| 91精品电影| 激情91久久| 久久国产精品毛片| 免费美女久久99| 日韩一区欧美二区| 日韩精品一页| 日韩精品免费一区二区夜夜嗨 | 四虎国产精品免费久久| 亚洲人成网站在线在线观看| 亚洲综合图色| 综合欧美精品| 久久狠狠亚洲综合| 久久精品国产成人一区二区三区| 加勒比视频一区| 韩国久久久久久| 高潮久久久久久久久久久久久久| 精品国产一区二区三区性色av| 色欧美自拍视频| 久久久久久夜| 欧美肉体xxxx裸体137大胆| 婷婷成人在线| 黄页网站一区| 日本一区二区中文字幕| 日本视频中文字幕一区二区三区| 欧美中文一区| 久久免费精品| 日韩电影二区| 亚洲免费观看| 亚洲综合图色| 欧美激情麻豆| yellow在线观看网址| 久久婷婷激情| 免费观看日韩电影| 国产欧美大片| 日韩高清欧美| 香蕉成人久久| 91大神在线观看线路一区| 麻豆精品99| 亚洲精品在线影院| 99国产精品视频免费观看一公开 | 综合亚洲色图| 国产午夜精品一区在线观看| 国产成年精品| 国产高清一区二区| 一区二区三区四区在线观看国产日韩| 国产亚洲一区| 日韩一区二区三区在线免费观看| 久久国产高清| 久久wwww| 欧美美女一区| 国产日韩一区二区三免费高清| 国产白浆在线免费观看| 国产美女精品| 欧美日韩黄网站| 久久精品主播| 欧美日韩xxxx| 亚洲福利国产| 69精品国产久热在线观看| 欧洲av不卡| 日本伊人午夜精品| 日韩在线精品| 日本v片在线高清不卡在线观看| 精品国产一区二区三区噜噜噜| 99在线观看免费视频精品观看| 国产精品一区二区三区美女| 国产精品av久久久久久麻豆网| 欧美亚洲三级| 欧美精品黄色| 欧美aⅴ一区二区三区视频| 精品欧美激情在线观看| 国产精品99久久免费| 久久午夜视频| 成人久久一区| 国产精品白丝久久av网站| 亚洲免费一区二区| 在线亚洲人成|