概述
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 实现线程同步效果例子所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复