700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 线程通信的经典问题:生产者消费者问题

线程通信的经典问题:生产者消费者问题

时间:2022-11-29 19:09:20

相关推荐

线程通信的经典问题:生产者消费者问题

package ThreadTest2;//线程通信的经典问题:生产者消费者//店员(资源)class Clerk{private int productCount = 0 ;public synchronized void produceProduct() {if(productCount < 100 ) {++productCount;System.out.println(Thread.currentThread().getName()+":开始生产第"+ productCount + "个产品");notify();}else {try {wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public synchronized void comsumeProduct() {if(productCount > 0) {System.out.println(Thread.currentThread().getName() + ":开始消费第"+productCount + "个产品");productCount--;notify();}else {try {wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class Producer extends Thread{private Clerk clerk;public Producer(Clerk clerk) {super();this.clerk = clerk;}public void run() {System.out.println( Thread.currentThread().getName()+":开始生产产品");while(true) {try {this.sleep(10);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}clerk.produceProduct();}}}class Customer extends Thread{private Clerk clerk;public Customer(Clerk clerk) {super();this.clerk = clerk;}public void run() {System.out.println(Thread.currentThread().getName()+":开始消费产品");while(true) {try {this.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}sumeProduct();}}}public class ProductTest {public static void main(String[] args) {Clerk clerk = new Clerk();Customer c1 = new Customer(clerk);c1.setName("消费者1");Producer p1 = new Producer(clerk);p1.setName("生产者1");p1.start();c1.start();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。