千家信息网

java多线程wait()和notify()如何使用

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,小编给大家分享一下java多线程wait()和notify()如何使用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!注:wait()和notify()应当用在synchronized
千家信息网最后更新 2025年01月17日java多线程wait()和notify()如何使用

小编给大家分享一下java多线程wait()和notify()如何使用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

注:wait()和notify()应当用在synchronized内package com.test;import java.util.ArrayList;public class ThreadWaitTeste {public static void main(String[] args) {ArrayList ar = new ArrayList();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  array;public Product(ArrayList 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 blocke.printStackTrace();}}}}}}class Consumer implements Runnable{ArrayList  array;public Consumer(ArrayList 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 blocke.printStackTrace();}}}}}}

看完了这篇文章,相信你对"java多线程wait()和notify()如何使用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0