1. 阻塞队列
- 生产者线程
- 线程需要实现 Runnable 接口
- 重写接口的run方法
- 声明变量
private BlockingQueue<Integer> queue
接受传入的阻塞队列
- 创建有参构造器
- 实现示例逻辑,生产100个数据,put进阻塞队列,每生产一个数据停顿20毫秒,输出信息
class Producer implements Runnable {
private BlockingQueue<Integer> queue;
public Producer(BlockingQueue<Integer> queue) {
this.queue = queue;
}
@Override
public void run() {
try {
for (int i = 0; i < 100; i++) {
Thread.sleep(20);
queue.put(i);
System.out.println(Thread.currentThread().getName() + "生产:" + queue.size());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 消费者线程
- 线程需要实现 Runnable 接口
- 重写接口的run方法
- 声明变量
private BlockingQueue<Integer> queue
接受传入的阻塞队列
- 创建有参构造器
- 实现示例逻辑,不停的从队列中take,每生产一个数据停顿0-1000随机毫秒,输出信息
class Consumer implements Runnable {
private BlockingQueue<Integer> queue;
public Consumer(BlockingQueue<Integer> queue) {
this.queue = queue;
}
@Override
public void run