import java.util.ArrayList;
import java.util.List;
public class Desk {
private List<String> list = new ArrayList<>();
//三个生产者
public synchronized void put(){
try{
String name = Thread.currentThread().getName();
if(list.size()==0){
list.add(name+"生产的商品");
System.out.println(name+"生产了一个商品");
Thread.sleep(2000);
//唤醒别的线程,等待自己
this.notifyAll();
this.wait();
}else {
//有产品了 继续唤醒别的线程 等待自己
this.notifyAll();
this.wait();
}
}catch (Exception e){
e.printStackTrace();
}
};
//两个消费者
public synchronized void get(){
try{
String name = Thread.currentThread().getName();
if (list.size()==1){
System.out.println(name+"对"+ list.get(0) +"进行了消费");
list.clear();
Thread.sleep(2000);
this.notifyAll();
this.wait();
}else {
this.notifyAll();
this.wait();
}
}catch (Exception e){
e.printStackTrace();
}
};
}
//执行代码
public class ThreadTest2 {
public static void main(String[] args) {
Desk desk =new Desk();
new Thread(()->{
while (true){
desk.put();
}
},"provide一").start();
new Thread(()->{
while (true){
desk.put();
}
},"provide二").start();
new Thread(()->{
while (true){
desk.put();
}
},"provide三").start();
new Thread(()->{
while (true){
desk.get();
}
},"consumer一").start();
new Thread(()->{
while (true){
desk.get();
}
},"consumer二").start();
}
}
//执行结果