1.Bread 类:
package com.dada.concurrent;
public class Bread {
}
2.Producer类:
package com.dada.concurrent;
import java.util.concurrent.ArrayBlockingQueue;
public class Producer implements Runnable {
private final ArrayBlockingQueue<Bread> queue;
public Producer(ArrayBlockingQueue<Bread> queue) {
this.queue = queue;
}
@Override
public void run() {
while(true) {
produce();
}
}
public void produce() {
try{
Bread bread = new Bread();
queue.put(bread);
System.out.println("Producer:"+bread);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3.Consumer类:
package com.dada.concurrent;
import java.util.concurrent.ArrayBlockingQueue;
public class Consumer implements Runnable {
private final ArrayBlockingQueue<Bread> queue;
public Consumer(ArrayBlockingQueue<Bread> queue) {
this.queue = queue;
}
@Override
public void run() {
while(true) {
try {
consume();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void consume() throws Exception {
try{
Bread bread = queue.take();
System.out.println("Consumer:"+bread);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.Client类:
package com.dada.concurrent;
import java.util.concurrent.ArrayBlockingQueue;
public class Client {
public static void main(String[] args) {
new Thread(new Producer(queue)).start();
new Thread(new Producer(queue)).start();
new Thread(new Consumer(queue)).start();
new Thread(new Consumer(queue)).start();
new Thread(new Consumer(queue)).start();
}
private static int capacity = 10;
private static ArrayBlockingQueue<Bread> queue = new ArrayBlockingQueue<Bread>(capacity);
}
最后
以上就是强健往事最近收集整理的关于ArrayBlockingQueue 实现线程同步效果例子的全部内容,更多相关ArrayBlockingQueue内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复