import java.util.concurrent.*;
/**
* @author WuYe
* @vesion 1.0 2019/11/5
* /
* /**
* @program: conCurrentProject
* @description: 生产者消费者
* @author: WuYe
* @create: 2019-11-05 14:13
**/
public class produceAndcomsumer {
static private ArrayBlockingQueue<Integer> taskQueue=new ArrayBlockingQueue<>(100);
public static void main(String[] args) {
int i=0;
while (i<10){
new producer(i+"",i).start();
i++;
}
i=0;
while (i<5){
new consumer(i+"",i).start();
i++;
}
}
static class producer extends Thread{
private int productID;
ThreadLocal<Integer> product=new ThreadLocal<Integer>(){
@Override
public Integer initialValue(){
return productID;
}
};
public producer(String name,int productID){
super(name);
this.productID=productID;
}
@Override
public void run(){
while (true){
try {
Thread.sleep(1000);
taskQueue.put(product.get());
System.out.println(Thread.currentThread().getName()+"--produce--product-->"+product.get());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
static class consumer extends Thread{
private int consumerID;
ThreadLocal<Integer> consumer=new ThreadLocal<Integer>(){
@Override
public Integer initialValue(){
return consumerID;
}
};
public consumer(String name,int consumerID){
super(name);
this.consumerID=consumerID;
}
@Override
public void run(){
while (true){
Integer product= null;
try {
Thread.sleep(1000);
product = taskQueue.take();
System.out.println(Thread.currentThread().getName()+"--cusume--product-->"+product);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
arrayblockingqueue生产者消费者
最新推荐文章于 2024-06-25 19:34:16 发布