标签:dex sum create while tar interrupt run pre star
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 2018/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(); } }
标签:dex sum create while tar interrupt run pre star
原文地址:https://www.cnblogs.com/binye-typing/p/9350021.html