目的是回顾多线程的几个api
多生产者+多消费者+共享池文章来源地址https://www.toymoban.com/news/detail-729879.html
public class Producer extends Thread{ private Store s; private String name; public Producer(Store s,String name) { this.s = s; this.name = name; } @Override public void run() { while (true){ synchronized (s){ if(s.isFull()){ try { s.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } else{ try { s.add(name); Thread.sleep(300); s.notifyAll(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }
public class Customer extends Thread{ private Store s; private String name; public Customer(Store s,String name) { this.s = s; this.name = name; } @Override public void run() { while (true){ synchronized (s){ if(s.isEmpty()){ try { s.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else { try { s.get(name); Thread.sleep(300); s.notifyAll(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }
public class Store { private int size; private static final int MAX_SIZE = 20; public void get(String name) { size--; System.out.println("消费者 "+name+"取出商品,池子里剩余奖品数量: "+size); } public void add(String name) { size++; System.out.println("生产者 "+name+"放入商品,池子里剩余奖品数量: "+size); } public boolean isEmpty(){ return size == 0; } public boolean isFull(){ return size == MAX_SIZE; } public int getSize(){ return size; } }
文章来源:https://www.toymoban.com/news/detail-729879.html
到了这里,关于多线程之生产者消费者的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!