Java 同步队列 SynchronousQueue
参考
介绍
我理解为队列长度为1,放进去一个元素之后就必须等待别人取出之后才能放入下一个
blocking queue ,其中每个插入操作必须等待另一个线程执行相应的删除操作,反之亦然。 同步队列没有任何内部容量,甚至没有容量。 您不能在同步队列中使用peek ,因为只有在您尝试删除它时才会出现该元素; 你不能插入一个元素(使用任何方法),除非另一个线程试图删除它; 你不能迭代,因为没有什么可以迭代。 队列的头部是第一个排队插入线程试图添加到队列的元素; 如果没有这样排队的线程,那么没有元素可供删除, poll()将返回null 。 出于其他Collection方法的目的(例如contains ), SynchronousQueue充当空集合。 此队列不允许null元素。
代码
package queue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
/**
* @Author 夏秋初
* @Date 2022/3/3 13:53
*/
public class Test {
public static void main(String[] args) {
SynchronousQueue<String> synchronousQueue = new SynchronousQueue();
new Thread(()->{
for (int i = 0; i < 10; i++) {
try {
synchronousQueue.put(String.valueOf(i));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(()->{
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
System.out.println(synchronousQueue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/15959606.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/15959606.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义