package leetcode0606.JUC;
import java.util.ArrayList;
import java.util.List;
public class Producer_Consumer {
public static void main(String[] args) {
ArrayList list = new ArrayList();
Thread thread1 = new Thread(new Producer(list));
thread1.setName("生产者线程");
Thread thread2 = new Thread(new Consumer(list));
thread2.setName("消费者线程");
thread1.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread2.start();
}
}
class Producer implements Runnable{
private List list;
public Producer(List list) {
this.list = list;
}
@Override
public void run() {
while (true){
synchronized (list){
if(list.size()>0){
try {
//已经有一个数据了,当前线程进入等待
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Object o = new Object();
list.add(o);
System.out.println(Thread.currentThread().getName()+"----->"+o);
list.notify();
}
}
}
}
class Consumer implements Runnable{
private List list;
public Consumer(List list) {
this.list = list;
}
@Override
public void run() {
while (true){
synchronized (list){
if(list.size()==0){
//仓库空了,不消费了
try {
list.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Object remove = list.remove(0);
list.notify();
System.out.println(Thread.currentThread().getName()+"--->"+remove);
}
}
}
}
02-10
1655