中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在java中喚醒notify()

發布時間:2021-04-21 17:12:48 來源:億速云 閱讀:161 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關怎么在java中喚醒notify(),文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

1.概念

隨機喚醒一個在一樣的對象監視器上等待的線程。通知一個在對象上等待的線程,也就是對象wait set中的線程,使其從wait()方法返回,而返回的前提是該線程獲取到了對象的鎖。

2.語法

public final void notify()

3.參數

4.返回值

沒有返回值

5.使用注意

notify()也必須在同步方法或同步代碼塊中調用,用來喚醒等待該對象的其他線程。如果有多個線程在等待,隨機挑選一個線程喚醒(喚醒哪個線程由JDK版本決定)。notify方法調用后,當前線程不會立刻釋放對象鎖,要等到當前線程執行完畢后再釋放鎖。

6.實例

注:wait()和notify()應當用在synchronized內
package com.test;
import java.util.ArrayList;
public class ThreadWaitTeste {
public static void main(String[] args) {
ArrayList<String> ar = new ArrayList<String>();
Product p = new Product(ar);
Consumer c = new Consumer(ar);
Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
class Product implements Runnable{
ArrayList<String>  array;
public Product(ArrayList<String> array){
this.array= array;
}
public void run() {
while (true){
     synchronized(array){
if(this.array.size()<5){
this.array.add("test!");
this.array.add("test!");
this.array.add("test!");
this.array.add("test!");
System.out.println("Product size : "+array.size());
}else{
System.out.println("Product wait size : "+array.size()+"數量少于5,等待......");
try {
array.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
class Consumer implements Runnable{
ArrayList<String>  array;
public Consumer(ArrayList<String> array){
this.array= array;
}
public void run() {
while(true){
synchronized(array){
if(this.array.size()>=5){
this.array.remove(1);
System.out.println("Consumer size : "+array.size());
}else{
try {
array.notifyAll();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}

關于怎么在java中喚醒notify()就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瓦房店市| 北京市| 井研县| 启东市| 蒙自县| 临夏县| 邻水| 隆化县| 新沂市| 贵德县| 高淳县| 安顺市| 石河子市| 安仁县| 安康市| 江山市| 乐平市| 弋阳县| 连云港市| 鄄城县| 阳信县| 开封市| 桐乡市| 青龙| 温泉县| 米泉市| 韶关市| 芜湖市| 漳浦县| 乌拉特前旗| 洛川县| 揭阳市| 扎兰屯市| 林芝县| 武穴市| 朝阳市| 丹凤县| 万年县| 攀枝花市| 佳木斯市| 永昌县|