日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java多线程常用方法 wait 和 notify

發布時間:2023/12/4 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java多线程常用方法 wait 和 notify 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:從一道面試題說起

啟動兩個線程, 一個輸出 1,3,5,7…99, 另一個輸出 2,4,6,8…100 最后 STDOUT 中按序輸出
1,2,3,4,5…100
要求用 Java 的 wait + notify 機制來實現

解法:

public class Test {private static Object lock = new Object();private static volatile int index = 0;public static void main(String[] args) {Runnable task = new Runnable() {public void run() {for(int i=0; i<50; i++) {synchronized (lock) {index++;System.out.println(index);try {if(index %2 ==0) {lock.notify();}else {lock.wait();}} catch (InterruptedException e) {e.printStackTrace();}}}}};new Thread(task).start();new Thread(task).start();} }

二:wait and notify

首先看下wait方法的Java Doc介紹:

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


* The current thread must own this object’s monitor.
*

翻譯一下就是:

導致當前線程阻塞,一直等到別的線程調用了notify()或notifyAll()方法
當前線程必須持有這個 對象的鎖(monitor)

方法簽名:

public final native void wait(long timeout) throws InterruptedException;

然后看下notify()的Java Doc介紹:

/**
* Wakes up a single thread that is waiting on this object’s
* monitor. If any threads are waiting on this object, one of them
* is chosen to be awakened. The choice is arbitrary and occurs at
* the discretion of the implementation.

翻譯一下大概就是:

喚醒任意一個正在等待當前對象的monitor鎖的線程。 若有多個線程處于此 object 控制權下的 wait 狀態,只有一個會被喚醒。

方法簽名:

public final native void notify();

再看下notifyAll()的Java Doc介紹:

/**
* Wakes up all threads that are waiting on this object’s monitor. A
* thread waits on an object’s monitor by calling one of the
* {@code wait} methods.

翻譯一下大概就是:

喚醒所有正在等待當前對象的monitor鎖的線程。

方法簽名:

public final native void notifyAll();

三:總結

wait 和 notify 均為 Object 的實例方法:

  • Object.wait()——暫停一個線程
  • Object.notify()——喚醒一個線程
  • Object.notifyAll()——喚醒所有等待Object對象鎖的線程
  • 另外:

  • 都需要擁有Object對象鎖才能調用
  • 可以使用此機制進行多線程之間的協同、通信,實現多線程的可見性
  • 總結

    以上是生活随笔為你收集整理的Java多线程常用方法 wait 和 notify的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 男生操女生在线观看 | 久久成人毛片 | av大片在线看 | 一区二区成人免费视频 | 午夜福利电影一区二区 | 久久视频这里只有精品 | 色综合天天综合 | 五十路中文字幕 | 动漫3d精品一区二区三区乱码 | 97精品熟女少妇一区二区三区 | 玖玖在线视频 | 久久网亚洲 | 91精品在线免费观看 | 亚洲美女视频 | 91精品久久香蕉国产线看观看 | 久久国产黄色片 | 色七七网站 | 欧美色综合网 | 国产伦精品视频一区二区三区 | 亚洲影视一区二区三区 | 人妻精油按摩bd高清中文字幕 | 97精品视频在线观看 | 91日批视频| 久草免费在线观看视频 | www.youjizz.com视频| 九九热精 | 欧美日韩一区二区在线播放 | 国产精品综合一区二区 | 久久久久国产精品夜夜夜夜夜 | 国产又色又爽又黄又免费 | 国产欧美一区二区三区在线看蜜臂 | 日本成人精品 | 性视频在线播放 | 国产自产一区二区 | 德国老妇性猛交 | 网站av在线 | 婷婷亚洲综合五月天小说 | 鲁大师私人影院在线观看 | 精品一区二区三区免费毛片 | 91日日| 成人亚洲精品久久久久软件 | 国产精品海角社区 | 日本在线视频一区二区 | 精品日本一区二区 | 色秀av| 豆花视频在线 | 国产激情91 | 国产18p| 亚洲第一黄色片 | 日韩免费视频一区二区视频在线观看 | 中文字幕一区二区三区乱码在线 | 精品少妇久久 | 午夜视频成人 | 国产av无码专区亚洲a∨毛片 | 丁香婷婷激情五月 | 国产人妻一区二区 | 剧情av在线 | 成人91免费视频 | 午夜国产一区二区三区 | 国产xxxx做受性欧美88 | 91水蜜桃| 韩国主播青草55部完整 | www.毛片com | 国产高潮呻吟久久 | 久久国产片 | 永久免费不卡在线观看黄网站 | 国产高清小视频 | 中文字幕亚洲激情 | 欧美成人免费大片 | 韩国一区二区三区视频 | 97精品国产97久久久久久粉红 | 亚洲理论电影在线观看 | 国产伦精品一区二区三区免.费 | 国产精品入口麻豆 | 国产精品久久不卡 | gogo人体做爰大胆视频 | 操操操操操操操 | 91亚洲免费 | 色视频在线免费观看 | 五月婷婷丁香网 | 亚洲九九九 | 一本久久精品一区二区 | 中文资源在线播放 | 日韩激情在线播放 | 久艹在线 | 日本一本不卡 | 无码人中文字幕 | 日日骚网 | 韩日一区二区三区 | 亚洲AV无码成人精品区在线观 | 日本在线高清 | 最新日韩在线 | 免费国产小视频 | 少妇又紧又色又爽又刺激视频 | 国产区91 | 一本大道东京热无码 | 91精品久久香蕉国产线看观看 | 久久免费一级片 | 中文字幕一区2区3区 |