public class Test {
public static void main(String[] args){
//创建一个阻塞队列,边界为1
BlockingQueue<String> queue = new ArrayBlockingQueue<String>(1);
new Thread(new PThread(queue)).start();
new Thread(new CThread(queue)).start();
}
} /**
* 生产者
*/
class PThread implements Runnable {
private BlockingQueue<String> queue;
private AtomicInteger count = new AtomicInteger(); public PThread(BlockingQueue<String> queue) {
this.queue = queue;
} @Override
public void run() {
while (true) {
String data = count.getAndIncrement() + "";
System.out.println("生产数据:"+data);
try {
queue.put(data);
Thread.sleep(2000);//sleep,便于观察
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
} /**
* 消费者
*/
class CThread implements Runnable {
private BlockingQueue<String> queue; public CThread(BlockingQueue<String> queue) {
this.queue = queue;
} @Override
public void run() {
while (true) {
try {
String data = queue.take();
System.out.println("消费数据:"+data);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

因为ArrayBlockingQueue是一个阻塞的有界队列,可以直接使用它.

多线程模拟生产者消费者示例之BlockQueue的更多相关文章

  1. 多线程模拟生产者消费者示例之Lock

    public class Test { public static void main(String[] args) { List<String> list = new ArrayList ...

  2. 多线程模拟生产者消费者示例之wait/notify

    public class Test { public static void main(String[] args) throws InterruptedException { List<Str ...

  3. java多线程模拟生产者消费者问题,公司面试常常问的题。。。

    package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ...

  4. java多线程解决生产者消费者问题

    import java.util.ArrayList; import java.util.List; /** * Created by ccc on 16-4-27. */ public class ...

  5. 【多线程】--生产者消费者模式--Lock版本

    在JDK1.5发布后,提供了Synchronized的更优解决方案:Lock 和 Condition 我们使用这些新知识,来改进例子:[多线程]--生产者消费者模式--Synchronized版本 改 ...

  6. Android-Java多线程通讯(生产者 消费者)&10条线程对-等待唤醒/机制的管理

    上一篇博客 Android-Java多线程通讯(生产者 消费者)&等待唤醒机制 是两条线程(Thread-0 / Thread-1) 在被CPU随机切换执行: 而今天这篇博客是,在上一篇博客A ...

  7. Java阻塞队列(BlockingQueue)实现 生产者/消费者 示例

    Java阻塞队列(BlockingQueue)实现 生产者/消费者 示例 本文由 TonySpark 翻译自 Javarevisited.转载请参见文章末尾的要求. Java.util.concurr ...

  8. Java多线程_生产者消费者模式2

    在我的上一条博客中,已经介绍到了多线程的经典案列——生产者消费者模式,但是在上篇中用的是传统的麻烦的非阻塞队列实现的.在这篇博客中我将介绍另一种方式就是:用阻塞队列完成生产者消费者模式,可以使用多种阻 ...

  9. 进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼

    1. 操作系统基本知识,进程,线程 CPU是计算机的核心,承担了所有的计算任务: 操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件:那么操作系统是如何进行任务调度的呢? ...

随机推荐

  1. Solidworks 2019 无法获得下列许可solidworks standard无效的(不一致的)使用许可号码(-8,544,0)

    若出现如下述错误,只需将C:\***(C盘中生成注册表的文件夹)\Program Files\SOLIDWORKS Corp\SOLIDWORKS下的netapi32.dll文件复制到所安装路径中SO ...

  2. logback-spring.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...

  3. DR 项目小结

    前言 个人的项目总结, 非技术类博文. 需要补充的知识点 HTTP 协议与其内置方法 curl 指令和各选项的意义 Keystone 认证流程和各项目配置文件 [keystone_authtoken] ...

  4. 有意思的B+树漫画介绍

    转载自:伯乐专栏作者/玻璃猫,微信公众号 - 梦见 漫画:什么是b+树 这一次我们来介绍 B+ 树. 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女. 2.每个中间节点都包含k-1个元素和 ...

  5. jQuery将字符串转换为数字

    1:parseInt(string)  parseInt("1234blue"); //returns 1234 parseInt("123"); //retu ...

  6. jmeter处理接口加密和解密

    https://www.liangzl.com/get-article-detail-39672.html https://www.cnblogs.com/artoftest/p/7277996.ht ...

  7. [LeetCode] 177.第N高薪水

    题目: 编写一个 SQL 查询,获取 Employee表中第 n 高的薪水(Salary). +----+--------+ | Id | Salary | +----+--------+ | 1 | ...

  8. Codeforces Round #460 (Div. 2) B Perfect Number(二分+数位dp)

    题目传送门 B. Perfect Number time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  9. defer、panic和recover

    1. defer(1)defer用于将某个方法或语句推迟到当前函数返回的最后一刻执行,一般用于释放某些已分配的资源.函数返回的最后一刻指的是,return语句更新返回值变量之后,函数返回之前,所以de ...

  10. chrome浏览器canvas画图不显示

    问题产生在学习cabvas给画布画图像的时候发现使用IE edge浏览器可以正常显示图像,而chrome则不行,经百度后知道是因为chrome浏览器会先加载javascript代码,之后才加载图片,这 ...