java实现生产者与消费者
来源:互联网 发布:手机怎么破解网络限制 编辑:程序博客网 时间:2024/05/18 02:43
package concurrent;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/**
* Created by geekgao on 16-3-4.
*/
public class ProducerAndConsumer2 {
public static void main(String[] args) {
BlockingQueue<Integer> blockingQueue = new ArrayBlockingQueue<Integer>(5);
//一个生产者和两个消费者
new Thread(new Producer2(blockingQueue)).start();
new Thread(new Consumer2(blockingQueue)).start();
new Thread(new Consumer2(blockingQueue)).start();
}
}
class Producer2 implements Runnable {
private BlockingQueue<Integer> blockingQueue;
public Producer2(BlockingQueue<Integer> blockingQueue) {
this.blockingQueue = blockingQueue;
}
public void run() {
try {
//生产20个产品
for (int i = 0;i < 20;i++) {
//当队列满了,put会自己阻塞住
blockingQueue.put(i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Consumer2 implements Runnable {
private BlockingQueue<Integer> blockingQueue;
public Consumer2(BlockingQueue<Integer> blockingQueue) {
this.blockingQueue = blockingQueue;
}
public void run() {
//一直从队列中取产品来消费
while(true) {
try {
//队列为空时take会阻塞住
System.out.println(Thread.currentThread().getName() + ":" + blockingQueue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/**
* Created by geekgao on 16-3-4.
*/
public class ProducerAndConsumer2 {
public static void main(String[] args) {
BlockingQueue<Integer> blockingQueue = new ArrayBlockingQueue<Integer>(5);
//一个生产者和两个消费者
new Thread(new Producer2(blockingQueue)).start();
new Thread(new Consumer2(blockingQueue)).start();
new Thread(new Consumer2(blockingQueue)).start();
}
}
class Producer2 implements Runnable {
private BlockingQueue<Integer> blockingQueue;
public Producer2(BlockingQueue<Integer> blockingQueue) {
this.blockingQueue = blockingQueue;
}
public void run() {
try {
//生产20个产品
for (int i = 0;i < 20;i++) {
//当队列满了,put会自己阻塞住
blockingQueue.put(i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Consumer2 implements Runnable {
private BlockingQueue<Integer> blockingQueue;
public Consumer2(BlockingQueue<Integer> blockingQueue) {
this.blockingQueue = blockingQueue;
}
public void run() {
//一直从队列中取产品来消费
while(true) {
try {
//队列为空时take会阻塞住
System.out.println(Thread.currentThread().getName() + ":" + blockingQueue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
0 0
- Java 实现生产者与消费者
- Java实现生产者与消费者
- java实现生产者与消费者
- java实现生产者与消费者
- java实现生产者与消费者
- 生产者与消费者问题Java实现
- 生产者消费者问题理解与Java实现
- 生产者消费者问题理解与Java实现
- 设计模式-生产者与消费者Java实现
- java 生产者与消费者问题实现
- 生产者消费者问题理解与Java实现
- java实现消费者与生产者队列
- 生产者消费者问题理解与Java实现
- java实现生产者与消费者(一)
- Java 实现生产者与消费者(二)
- 生产者与消费者问题【java实现】
- 生产者与消费者问题,java实现
- Java实现生产者与消费者模型
- listView convertView缓存机制 & 异步加载图片 问题剖析
- Lambda 表达式
- 归并排序算法
- final修饰符、抽象类、接口、多态、内部类的简单小结
- 319. Bulb Switcher
- java实现生产者与消费者
- Codeforces Round #367 (Div. 2) C. Hard problem 朴素dp、线性dp
- redis常用命令
- HTML
- 教你如何利用灰度图透明效果制作隐藏图片.part1
- JVM内存优化——小试牛刀
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset 二进制树、Trie
- C#实现维吉尼亚密码的加密和解密
- Java多线程基础(1)-基础知识