亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

阳原县| 加查县| 普洱| 连云港市| 宜兰县| 呈贡县| 邵阳县| 鲁甸县| 师宗县| 介休市| 钟山县| 收藏| 安吉县| 堆龙德庆县| 海安县| 修武县| 凯里市| 靖远县| 梁山县| 雷州市| 三亚市| 玉溪市| 潢川县| 三门县| 虎林市| 嵊泗县| 内乡县| 静安区| 铁力市| 肃宁县| 桂平市| 上犹县| 高平市| 安化县| 万全县| 台山市| 金塔县| 舒城县| 璧山县| 越西县| 贺兰县|