亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java多線程之wait(),notify(),notifyAll()的詳解分析

2019-11-26 16:04:17
字體:
來源:轉載
供稿:網友
wait(),notify(),notifyAll()不屬于Thread類,而是屬于Object基礎類,也就是說每個對象都有wait(),notify(),notifyAll()的功能.因為每個對象都有鎖,鎖是每個對象的基礎,當然操作鎖的方法也是最基礎了。

wait導致當前的線程等待,直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,或被其他線程中斷。wait只能由持有對像鎖的線程來調用。

notify喚醒在此對象監視器上等待的單個線程。如果所有線程都在此對象上等待,則會選擇喚醒其中一個線程(隨機)。直到當前的線程放棄此對象上的鎖,才能繼續執行被喚醒的線程。同Wait方法一樣,notify只能由持有對像鎖的線程來調用.notifyall也一樣,不同的是notifyall會喚配所有在此對象鎖上等待的線程。
"只能由持有對像鎖的線程來調用"說明wait方法與notify方法必須在同步塊內執行,即synchronized(obj)之內.再者synchronized代碼塊內沒有鎖是寸步不行的,所以線程要繼續執行必須獲得鎖。相輔相成。
看一個很經典的例子(生產者與消費者):
首先是消費者線程類:
復制代碼 代碼如下:

import java.util.List;
public class Consume implements Runnable {
 private List container = null;
 private int count;
 public Consume(List lst) {
  this.container = lst;
 }
 public void run() {
  while (true) {
   synchronized (container) {
    if (container.size() == 0) {
     try {
      container.wait();// 容器為空,放棄鎖,等待生產
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
    }
    try {
     Thread.sleep(1000);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    container.remove(0);
    container.notify();
    System.out.println("我吃了" + (++count) + "個");
   }
  }
 }
}

接下來是生產者線程類:
復制代碼 代碼如下:

import java.util.List;
public class Product implements Runnable {
 private List container = null;
 private int count;
 public Product(List lst) {
  this.container = lst;
 }
 public void run() {
  while (true) {
   synchronized (container) {
    if (container.size() > MultiThread.MAX) {
     // 如果容器超過了最大值,就不要在生產了,等待消費
     try {
      container.wait();
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
    }
    try {
     Thread.sleep(1000);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    container.add(new Object());
    container.notify();
    System.out.println("我生產了" + (++count) + "個");
   }
  }
 }
}

最后是測試類:
復制代碼 代碼如下:

import java.util.ArrayList;
import java.util.List;
public class MultiThread {
 private List container = new ArrayList();
 public final static int MAX = 5;
 public static void main(String args[]) {
  MultiThread m = new MultiThread();
  new Thread(new Consume(m.getContainer())).start();
  new Thread(new Product(m.getContainer())).start();
 }
 public List getContainer() {
  return container;
 }
 public void setContainer(List container) {
  this.container = container;
 }
}

運行結果如下所示:
復制代碼 代碼如下:

我生產了1個
我吃了1個
我生產了2個
我生產了3個
我生產了4個
我生產了5個
我生產了6個
我生產了7個
我吃了2個
我生產了8個
我吃了3個
我生產了9個
我吃了4個
我吃了5個
我吃了6個
我吃了7個
我吃了8個
我生產了10個
我生產了11個
我吃了9個
我生產了12個
我吃了10個
......

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲视频中文字幕视频| 欧美日韩综合视频| 亚洲欧美精品suv| 在线观看日韩www视频免费| 久久久av网站| 136fldh精品导航福利| 国产精品电影网| 国产精品视频免费观看www| 中文字幕精品在线| 久久噜噜噜精品国产亚洲综合| 欧美巨猛xxxx猛交黑人97人| 韩国一区二区电影| 韩国福利视频一区| 精品久久久国产精品999| 亚洲精品午夜精品| 欧美激情综合色| 国产综合视频在线观看| 国产精品久久久久一区二区| 九九热精品视频在线播放| 久久国产精品久久久| 久久久久久91香蕉国产| 国产成+人+综合+亚洲欧洲| 亚洲乱码国产乱码精品精| 久久av资源网站| 亚洲激情电影中文字幕| 国产日韩精品在线观看| 国产伦精品一区二区三区精品视频| 亚洲伊人第一页| 伊人成人开心激情综合网| 国产不卡av在线| 国产做受高潮69| 97视频在线观看亚洲| 亚洲国产成人在线播放| www.99久久热国产日韩欧美.com| 亚洲国产精品嫩草影院久久| 狠狠干狠狠久久| 中文字幕日韩精品在线观看| 亚洲欧洲午夜一线一品| 热久久视久久精品18亚洲精品| 日韩视频中文字幕| 国产91网红主播在线观看| 欧美亚洲视频一区二区| 欧美久久久精品| 精品美女国产在线| 91久久久久久久久久久久久| 91在线播放国产| 国产精品pans私拍| 日韩av男人的天堂| 日韩欧美在线网址| 国产精品成av人在线视午夜片| 欧美夫妻性生活xx| 国产精品福利小视频| www.欧美精品一二三区| 欧美午夜美女看片| 91夜夜未满十八勿入爽爽影院| 国产精品视频免费观看www| 国产成人福利视频| 粉嫩av一区二区三区免费野| 国产在线视频一区| 久久久精品视频成人| 午夜欧美不卡精品aaaaa| 国模吧一区二区| 亚洲国产精品人人爽夜夜爽| 亚洲区中文字幕| 亚洲美女精品久久| 亚洲欧美精品伊人久久| 4438全国亚洲精品在线观看视频| 久久99久久久久久久噜噜| 国产在线观看一区二区三区| 国产69精品久久久久9999| 亚洲欧洲一区二区三区在线观看| 亚洲人成77777在线观看网| 4438全国亚洲精品在线观看视频| 97涩涩爰在线观看亚洲| 成人中文字幕+乱码+中文字幕| 久久99国产精品久久久久久久久| 热99精品里视频精品| 亚洲精品自在久久| 久久免费少妇高潮久久精品99| 国产日韩中文字幕| 国产精品无码专区在线观看| 久久成人综合视频| 久久九九精品99国产精品| 国产精品偷伦免费视频观看的| 精品久久久久久中文字幕大豆网| 欧美激情xxxxx| 日韩免费观看网站| 高清日韩电视剧大全免费播放在线观看| 久热精品在线视频| 搡老女人一区二区三区视频tv| 国产成人拍精品视频午夜网站| 亚洲欧美国产日韩中文字幕| 日韩有码视频在线| 国产v综合v亚洲欧美久久| 欧美日本高清视频| 欧美日韩成人精品| 亚洲精品日韩丝袜精品| 尤物tv国产一区| 中文在线资源观看视频网站免费不卡| 97在线观看免费高清| 91久久综合亚洲鲁鲁五月天| 成人免费午夜电影| 欧美电影免费看| 欧美伊久线香蕉线新在线| 成人做爰www免费看视频网站| 久久久久久一区二区三区| 久久大大胆人体| 久久99亚洲热视| 岛国av一区二区三区| 欧美肥婆姓交大片| 日韩av网址在线观看| 久久理论片午夜琪琪电影网| 亚洲欧美另类中文字幕| 国产成人精品免费视频| 午夜精品久久久久久99热软件| 国产精品久久久久久一区二区| 91亚洲人电影| 欧美高清第一页| 成人疯狂猛交xxx| 亚洲精品中文字幕有码专区| 午夜精品视频在线| 欧美在线不卡区| 亚洲最大福利网| 亚洲欧美国产精品| 日韩欧美在线视频| 欧美日韩高清在线观看| 日韩电影视频免费| 色婷婷综合成人av| 欧美激情18p| 日韩免费看的电影电视剧大全| 中文字幕免费国产精品| 最近中文字幕mv在线一区二区三区四区| 亚洲影院高清在线| 日韩高清免费在线| 欧美天天综合色影久久精品| 夜夜嗨av色综合久久久综合网| 亚洲www视频| 亚洲免费一在线| 色综合伊人色综合网站| 欧美亚洲激情在线| 欧美日韩免费网站| 日韩三级影视基地| 成人欧美在线观看| 国产精品露脸av在线| 久久精品视频亚洲| 日本乱人伦a精品| 国产精品h片在线播放| 日韩成人av一区| 久久精品久久久久久| 69**夜色精品国产69乱| 日本久久久久亚洲中字幕| 久久中文久久字幕| 高清在线视频日韩欧美| 国产日韩av在线| 欧美精品在线第一页| 一本久久综合亚洲鲁鲁| 欧美成人精品一区二区三区| 欧美日韩成人黄色| 欧美一区二区三区艳史| 久久九九有精品国产23| 一二美女精品欧洲| 国产成人精品a视频一区www| 中文日韩电影网站| 久久国产精品影视|