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();
}
}
}
}
分享到:
相关推荐
阻塞队列(BlockingQueue)是一种特殊的队列,它支持两个附加操作:阻塞的插入方法put和阻塞的移除方法take。BlockingQueue继承了Queue接口,是Java 5中加入的。 BlockingQueue常用方法示例: 1. add(E e):添加一...
在新增的Concurrent包中,BlockingQueue...通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。
弹簧阻挡队列 用Spring Boot阻止队列
在Java中,`BlockingQueue`接口使用泛型来指定队列中元素的类型,如`BlockingQueue<Integer>`或`BlockingQueue<String>`。这样,编译器就能在编译阶段检查类型匹配,避免了类型转换的麻烦和运行时可能出现的错误。 ...
Java中的阻塞队列BlockingQueue是一种并发编程中常用的工具,它实现了线程间的同步和通信。阻塞队列的核心特性在于当队列为空时,尝试获取元素的线程会被阻塞,直到其他线程添加元素;当队列满时,尝试添加元素的...
10、阻塞队列BlockingQueue实战及其原理分析_
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本.mp4
6.7 阻塞队列BlockingQueue 实战及其原 理分析二副本.mp4
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本副本.mp4
阻塞队列(BlockingQueue)是Java并发包(java.util.concurrent)中的一种数据结构,它在队列为空或满时,能够自动阻塞生产者或消费者的线程,直到条件满足为止。这种机制保证了线程间的同步和协作,避免了不必要的...
6.7 阻塞队列BlockingQueue 实战及其原 理分析二副本副本.mp4
BlockingQueue 是一个并发容器,它实现了队列的接口,同时具备阻塞功能。当队列为空时,尝试从队列中获取元素的操作会阻塞,直到有元素可用;当队列满时,尝试向队列中添加元素的操作也会阻塞,直到队列有空位。这种...
6.6 阻塞队列BlockingQueue 实战及其原 理分析一副本副本副本.mp4
阻塞队列教程式谈话“数周的调试可以为您节省数小时的 TLA+”。 本教程和权威背景阅读材料(含剧透)的灵感来自 。 我相信这一切都可以追溯到 c2 wiki 的 。 每个引入了一个新的 TLA+ 概念。 回到第一个承诺继续跟进...
在C++编程中,阻塞队列是一种线程安全的数据结构,它允许生产者线程向队列中添加元素,而消费者线程则从队列中移除元素。当队列满时,生产者线程会被阻塞,直到队列有空位;同样,当队列为空时,消费者线程也会被...
先看看 BlockingQueue 接口的文档说明: 1、add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会抛出 IllegalStateException 异常; 2、offer:添加元素到队列里,添加成功返回true,添加失败...
"详解Java阻塞队列(BlockingQueue)的实现原理" Java阻塞队列(BlockingQueue)是Java.util.concurrent包下重要的数据结构,提供了线程安全的队列访问方式。BlockingQueue的实现原理主要是基于四组不同的方法用于...
6.JUC并发工具类在大厂的应用场景详解 (1).pdf 7、深入理解 AQS 独占锁之 Reentrantlock 源码分析 (1).pdf 8、读写锁ReentrantReadWriteLock&StampLock详解.pdf ...10、阻塞队列BlockingQueue 实战及其原理分析.pdf
在Java中,`java.util.concurrent`包中的`BlockingQueue`接口及其实现类(如`LinkedBlockingQueue`、`ArrayBlockingQueue`等)就是典型的安全队列。 **一、安全队列的基本概念** 1. **线程安全**:安全队列保证了...
这些类都实现了`java.util.concurrent.BlockingQueue`接口,该接口定义了`put`、`take`、`offer`、`poll`等方法,用于在队列中添加、移除或检查元素,并且这些操作在队列满或空时会阻塞相应的线程。 在提供的代码...