import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
/*
* BlockingQueue
* put()—— 队列满后,等待有空间了才能放入,即等 take()
* take()—— 队列空后,等待放入了元素才才能取出,即等 put()
*
* 两个 含一个空间的阻塞队列,实现 同步 通知功能:两条线程交互执行
*/
public class BlockQueueCommunication {
public static void main(String[] args) {
final MyThread m = new MyThread();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(true)m.sub1();
}
}).start();
while(true)
m.main();
}
static class MyThread {
BlockingQueue queue1 = new ArrayBlockingQueue(1);
BlockingQueue queue2 = new ArrayBlockingQueue(1);
{
try {
queue2.put(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void main() {
try {
queue1.put(1);
Thread.sleep((long)(Math.random()*100));
System.out.println("main:administrators");
queue2.take();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sub1() {
try {
queue2.put(1);
Thread.sleep((long)(Math.random()*100));
System.out.println("sub1:system database admin");
queue1.take();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
在新增的Concurrent包中,BlockingQueue...通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。
弹簧阻挡队列 用Spring Boot阻止队列
14-阻塞队列BlockingQueue实战及其原理分析二.pdf
10、阻塞队列BlockingQueue实战及其原理分析_
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本.mp4
6.7 阻塞队列BlockingQueue 实战及其原 理分析二副本.mp4
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本副本.mp4
6.7 阻塞队列BlockingQueue 实战及其原 理分析二副本副本.mp4
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本副本副本.mp4
主要介绍了java 中 阻塞队列BlockingQueue详解及实例的相关资料,需要的朋友可以参考下
阻塞队列教程式谈话“数周的调试可以为您节省数小时的 TLA+”。 本教程和权威背景阅读材料(含剧透)的灵感来自 。 我相信这一切都可以追溯到 c2 wiki 的 。 每个引入了一个新的 TLA+ 概念。 回到第一个承诺继续跟进...
先看看 BlockingQueue 接口的文档说明: 1、add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会抛出 IllegalStateException 异常; 2、offer:添加元素到队列里,添加成功返回true,添加失败...
6.JUC并发工具类在大厂的应用场景详解 (1).pdf 7、深入理解 AQS 独占锁之 Reentrantlock 源码分析 (1).pdf 8、读写锁ReentrantReadWriteLock&StampLock详解.pdf ...10、阻塞队列BlockingQueue 实战及其原理分析.pdf
本文简要介绍下BlockingQueue接口中几个方法的作用及区别。 boolean add(E e) (1)在不违反容量限制的情况下,可立即将指定元素插入此队列,成功返回true。 (2)当无可用空间时候,抛出IllegalStateException异常 ...
主要介绍了详解Java阻塞队列(BlockingQueue)的实现原理,阻塞队列是Java util.concurrent包下重要的数据结构,有兴趣的可以了解一下
BlockingQueue接口 – 阻塞队列2.1 ArrayBlockingQueue类(有界阻塞队列)2.2 LinkedBlockingQueue类(无界阻塞队列)3. 源码:BlockingQueue实现生产者消费者模式→ 输出结果截图 1. Queue接口 – 队列 public ...
JUC是什么 线程 进程 / 线程 ...BlockingQueue(阻塞队列) 线程池 池化技术 线程池的优势 线程池的特点 线程池三大方法 线程池七大参数 线程池四种拒绝策略 ForkJoin 异步回调 Volatile 指令重排 JMM
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景...
RustBlockingQueue是使用线程安全的阻塞队列在线程之间进行通信的工具。 请注意,Rust消息传递工具执行的操作大致相同。 这很好地说明了如何构建线程之间可以共享的数据结构。 设计: 在此设计中,有一个结构...
在前面的的文章,写了一个带有缓冲区的队列,是用JAVA的Lock下的... 使用ArrayBlockingQueue的一个子类BlockingQueue实现一个可阻塞队列,一个线程put另一个线程take,当队列为空时take等待,当线程满时put等待