import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public class Main{
public static void main(String[] args) throws InterruptedException {
// int[] a = new int[]{3,8,4,6,7,9,1,3};
// //int[] a = new int[]{3,3,3,3,3,1};
// node n3 = new node(3,null,null);
// node n2 = new node(2,null,new node(4,null,null));
// node n5 = new node(5,n3,n2);
// node n6 = new node(6,null,null);
// node n7 = new node(7,null,n6);
// node n1 = new node(1,n5,n7);
Resource r = new Resource(2);
new Thread(()->{
try {
r.pro();
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
new Thread(()->{
try {
r.con();
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
Thread.sleep(2000);
r.setFlag(false);
}
}
class Resource{
private AtomicInteger count = new AtomicInteger(0);
private ArrayBlockingQueue<Integer> q;
private volatile boolean flag = true;
public Resource(int cap) {
this.q = new ArrayBlockingQueue<>(cap);
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public void pro() throws InterruptedException {
while(flag){
Integer temp = count.addAndGet(1);
System.out.println("生产了"+temp);
q.put(temp);
}
}
public void con() throws InterruptedException {
Integer temp =null;
while(flag){
temp = q.take();
System.out.println("消费了"+temp);
}
}
}
生产者消费者
最新推荐文章于 2024-04-24 00:06:45 发布