91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

伊通| 连州市| 和田县| 师宗县| 葫芦岛市| 奉新县| 温宿县| 北票市| 西乌珠穆沁旗| 乐平市| 辉南县| 通州区| 西和县| 上林县| 准格尔旗| 天祝| 南宫市| 普定县| 嫩江县| 乡城县| 宝山区| 水城县| 巴彦淖尔市| 凤凰县| 合阳县| 东辽县| 临海市| 扶绥县| 通海县| 鲁甸县| 岗巴县| 奇台县| 昭通市| 改则县| 犍为县| 甘孜县| 子长县| 万州区| 神农架林区| 富顺县| 汝城县|