用队列ConcurrentLinkedQueue模拟生产者和消费者
来源:互联网 发布:node pm2 静态目录 编辑:程序博客网 时间:2024/06/11 06:34
用队列ConcurrentLinkedQueue模拟生产者和消费者
package com.queue;import java.util.Queue;import java.util.UUID;import java.util.concurrent.ConcurrentLinkedQueue;/** * Created by lifeng * 2017/12/20 10:15 */public class QueueTest2 { public static void main(String[] args) { Queue<String> queue = new ConcurrentLinkedQueue<String>(); Thread t1 = new Thread(new Producter(queue)); Thread t3 = new Thread(new Producter(queue)); Thread t2 = new Thread(new Consumer(queue)); Thread t4 = new Thread(new Consumer(queue)); t1.start(); t2.start(); t3.start(); t4.start(); }}class Producter implements Runnable{ private Queue<String> queue; public Producter(Queue<String> queue){ this.queue = queue; } @Override public void run() { while (true){ synchronized(Integer.class){ if(queue.size() < 5000){ String data = UUID.randomUUID().toString(); boolean flag = queue.offer(data); System.out.println("线程"+Thread.currentThread().getName()+"生产:"+ (flag==true ? data:"")); }else{ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } } }}class Consumer implements Runnable{ private Queue<String> queue; public Consumer(Queue<String> queue){ this.queue = queue; } @Override public void run() { while (true){ synchronized(String.class){ if(!queue.isEmpty()){ String data = queue.poll(); System.out.println("线程"+Thread.currentThread().getName()+"消费:"+ data); }else{ try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } } }}
阅读全文
0 0
- 用队列ConcurrentLinkedQueue模拟生产者和消费者
- 用消息队列模拟生产者消费者模型
- 生产者与消费者的快速实现——并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- 生产者和消费者模拟
- 用synchonized实现多线程的消费者和生产者的模拟
- 生产者消费者问题【线程中ConcurrentLinkedQueue】
- 阻塞队列和生产者-消费者模式
- 阻塞队列和生产者-消费者模式
- BlockingQueue阻塞队列和生产者-消费者模式
- 生产者消费者模式和阻塞队列
- java多线程中的生产者和消费者队列
- Java 多线程 生产者和消费者 队列
- 基于阻塞队列实现消费者和生产者
- 基于阻塞队列实现消费者和生产者
- RabbitMQ消息队列生产者和消费者
- 队列与并发--生产者和消费者模式
- java 线程模拟生产者和消费者
- 线程中的生产者和消费者的模拟
- win10x解决安装pywin32-221.win32-py3.5.exe时报错没有发现注册表的方法
- python 拆分日志文件
- 13123
- 解决程序包和运行环境包的一种依赖
- ubuntu 删除anaconda
- 用队列ConcurrentLinkedQueue模拟生产者和消费者
- Rxjava学习记录(一)
- java错误报警机制的实现
- jsp(一) jsp理论
- Spring cache基本使用
- HTML js使boeder变色
- swagger与springmvc集成异常记录
- linux查看和修改PATH环境变量的方法
- 教你分分钟学会用python爬虫框架Scrapy