Java中的SynchronousQueue阻塞队列使用代码实例
更新时间:2023年12月14日 10:04:06 作者:Terisadeng
这篇文章主要介绍了Java中的SynchronousQueue阻塞队列使用代码实例,SynchronousQueue是无缓冲区的阻塞队列,即不能直接向队列中添加数据,会报队列满异常,需要的朋友可以参考下
SynchronousQueue阻塞队列
SynchronousQueue是无缓冲区的阻塞队列,即不能直接向队列中添加数据,会报队列满异常,如下所示:
import java.util.concurrent.SynchronousQueue;
public class SynchronousQueueExp {
public static void main(String[] args) {
SynchronousQueue<String> sq=new SynchronousQueue<>();
String str="aaa";
sq.add(str);
}
}
必须在有消费者阻塞等待时生产者才可以向队列中添加数据,这时由阻塞状态的消费者直接获取,相当于没有向队列中添加数据,直接将数据交给了消费者。
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
public class SynchronousQueueExp {
public static void main(String[] args) {
final SynchronousQueue<String> sq=new SynchronousQueue<>();
/*String str="aaa";
sq.add(str);*/
Thread t1=new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
System.out.println("消费者阻塞等待获取数据...");
System.out.println("消费者消费数据:"+sq.take());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
},"t1");
Thread t2=new Thread(new Runnable() {
@Override
public void run() {
sq.add("bb");
}
},"t2");
t1.start();
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.start();
}
}
到此这篇关于Java中的SynchronousQueue阻塞队列使用代码实例的文章就介绍到这了,更多相关SynchronousQueue阻塞队列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
IntelliJ IDEA 2021 Tomcat 8启动乱码问题的解决步骤
很多朋友遇到过IntelliJ IDEA 2021 Tomcat 8启动的时候出现各种奇葩问题,最近有童鞋反映IntelliJ IDEA 2021 Tomcat 8启动乱码,正好我也遇到这个问题,下面我把解决方法分享给大家需要的朋友参考下吧2021-06-06
一文详解如何在idea中快速搭建一个Spring Boot项目
IntelliJ IDEA作为Java开发者的首选IDE,深度集成Spring Boot支持,可一键生成项目骨架、智能配置依赖,这篇文章主要介绍了如何在idea中快速搭建一个Spring Boot项目的相关资料,需要的朋友可以参考下2025-06-06


最新评论