package com.testcase; public class TestThread { public static void main(String[] args) { Product product = new Product(); Producer p1 = new Producer(); p1.setProduct(product); Consumer c1 = new Consumer(); c1.setProduct(product); Consumer c2 = new Consumer(); c2.setProduct(product); Thread t1 = new Thread(p1); t1.setName("生产者1"); t1.start(); Thread t2 = new Thread(c1); t2.setName("消费者01"); t2.start(); Thread t3 = new Thread(c2); t3.setName("消费者02"); t3.start(); } } class Producer implements Runnable{ private Product product; public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } @Override public void run() { while (true) { try { product.increase(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class Consumer implements Runnable{ private Product product; public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } @Override public void run() { while (true) { try { product.decrease(); Thread.yield(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class Product { private int num = 0; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public synchronized void increase() throws InterruptedException { if (num < 100) { Thread.sleep(200); this.num ++; System.out.println(Thread.currentThread().getName() + "生产第" + num + "个产品!"); notifyAll(); } else { wait(); } } public synchronized void decrease() throws InterruptedException { if (num > 0) { Thread.sleep(500); System.out.println(Thread.currentThread().getName() + "消费第" + num + "个产品!"); this.num --; notifyAll(); } else { wait(); } } }
生产者消费者问题(java)
猜你喜欢
转载自blog.csdn.net/vichou_fa/article/details/60585047
今日推荐
周排行