1.Stack工具
2.生产者Producer
3.消费者Consumer
4.运行程序Test
1.Stack工具
import java.util.ArrayList;
public class Container {
ArrayList<Object> list = new ArrayList<Object>();
boolean flag = false; // 容器没有东西
// 加入
synchronized public void set(Object obj) {
while (flag) { // flag==true说明有产品
// 加入一个
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
list.add(obj);
System.out.println("生产一个!");
flag = true;
notifyAll();
}
// 取出
synchronized public void get() {
while (!flag) { // flag==true说明有产品
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (list.size() >= 1) {
list.remove(list.size() - 1);
}
System.out.println("消费一个!");
flag = false;
notifyAll();
}
}
2.生产者Producer
public class Provider implements Runnable {
private Container cont;
public Provider(Container cont) {
this.cont = cont;
}
@Override
public void run() {
while (true) {
// 生产一个
cont.set(new Integer(1));
}
}
}
3.3.消费者Consumer
public class Consumer implements Runnable{
private Container cont;
public Consumer(Container cont){
this.cont=cont;
}
@Override
public void run() {
while(true){
//消费一个
cont.get();
}
}
}
4.运行程序Test
public class Test {
public static void main(String[] args) {
Container cont=new Container();
Provider p = new Provider(cont);
Consumer c = new Consumer(cont);
Thread tp=new Thread(p);
Thread tc=new Thread(c);
tp.start();
tc.start();
}
}
盘子:容器;
盘子里有菜,消费者就吃,吃了就没,没了生产者就产菜,产了就停,等消费者再吃。。。
记录一下