2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 多线程编程实践——实现生产者 消费者模型

多线程编程实践——实现生产者 消费者模型

时间:2020-07-05 01:50:57

相关推荐

多线程编程实践——实现生产者 消费者模型

class Clerk {private int products;private int maximum;// 最大储货量public Clerk(int maxmum) {this.maximum = maxmum;}public synchronized void addProduct() {if (products >= maximum) {try {wait();} catch (InterruptedException e) {e.printStackTrace();}} else {products++;System.out.println(Thread.currentThread().getName() + "到货第 " + products + "个产品");notifyAll();}}public synchronized void saleProduct() {if (products > 0) {System.out.println(Thread.currentThread().getName() + "买走第 " + products + "个产品");products--;notifyAll();} else {try {wait();} catch (InterruptedException e) {e.printStackTrace();}}}}class Producer implements Runnable{private Clerk clerk;public Producer(Clerk clerk) {this.clerk = clerk;}public void run() {while (true) {clerk.addProduct();try {Thread.currentThread().sleep(1);} catch (InterruptedException e) {e.printStackTrace();}}}}class Consumer implements Runnable {private Clerk clerk;public Consumer(Clerk clerk) {this.clerk = clerk;}public void run() {while (true) {clerk.saleProduct();try {Thread.currentThread().sleep(10);} catch (InterruptedException e) {e.printStackTrace();}}}}/*** Created by bruce on /7/22.*/public class ProducerAndConsumer {public static void main(String[] args) {Clerk clerk = new Clerk(20);Thread t1 = new Thread(new Producer(clerk));Thread t2 = new Thread(new Consumer(clerk));Thread t3 = new Thread(new Consumer(clerk));Thread t4 = new Thread(new Consumer(clerk));t1.setName("生产者");t2.setName("消费者1");t3.setName("消费者2");t4.setName("消费者3");t1.start();t2.start();t3.start();t4.start();}}

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