描述
SynchrounousQueue
是一个比较特殊的无界阻塞队列并支持非公平和公平模式,严格意义上来说不算一个队列,因为它不像其他阻塞队列一样能有容量,它仅有一个指向栈顶的地址,栈中的节点由线程自己保存。任意的线程都会等待直到获得数据(消费)或者交付完成(生产)才会返回。
SynchronousQueue
和普通的阻塞队列的差异类似于下图所示(非公平模式):
阻塞队列通常是存储生产者的生产结果然后消费者去消费,阻塞队列就类似于一个中转站。
SynchronousQueue
则存储生产结果,只告诉消费者生产者的位置,然后让其自己去与之交流(反过来一样),就没有中转的一个过程而是直接交付的。
SynchronousQueue
将数据交付的任务交给生产者或消费者自行处理,实现的非常看不懂。
那么既然是 Queue
,就可以通过 offer
和 take
方法来了解
offer:
public boolean offer(E e) {
if (e == null) throw new NullPointerException();
return transferer.transfer(e, true, 0) != null;
}
take:
相关文章
k8s v-1.20版本部署详细过程[实测可用无坑]
k8s v-1.20版本部署详细过程[实测可用无坑] 1.部署环境准备 1.1 各软件版本 系统 Docker k8s Linux master 3.10.0-1160.el7.x86_64 Dock...
Java 基础常见知识点&面试题总结(上),2022 最新版!| JavaGuide
你好,我是 Guide。秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你。 基础概念与常识 Java 语言有哪些特点? 简单易学; 面向对象(封装,...
RabitMQ 发布确认
每日一句 军人天生就舍弃了战斗的意义! 概述 RabitMQ 发布确认,保证消息在磁盘上。 前提条件 1。队列必须持久化 队列持久化 2。队列中的消息必须持久化 消息持久化 使用 三种发布确认的方式:...
windows中打开redis-server闪退
windows中打开redis-server闪退 第一次运行redis-server的时候闪退 win+R运行cmd打开命令行 进入redis根目录 输入 redis-server.exe redis...
M1 MAC 装ubuntu更换镜像源
记录一下今天突发奇想装个ubuntu遇到问题 w镜像源:更换镜像源网上教程基本对的,但要注意机型(ps:m1 mac) 补:很多时候是对问题理解不到位,比如我直接搜索arm ubuntu镜像源 认识有...
windows安装mysql8(5分钟)
1、下载 MySQL https://dev.mysql.com/downloads/mysql/ 下载完成后,解压缩到你的目录里。 2、配置 MySQL 的配置文件 创建一个文件,名称为: my.i...
如何生成一个java文档
如何生成一个java文档 众所周知,一个程序给别人看可能可以看懂,几万行程序就不一定了。在更多的时候,我们并不需要让别人知道我们的程序是怎么写的,只需要告诉他们怎么用的。那么,api文档就发挥了它的作...
ch03 Java基础
JAVA基础 JAVA基础 数据类型 类型转换 变量 类变量和实例变量的区别和联系 常量 变量命名规范 运算符 位运算 包机制 JavaDoc 数据类型 强类型语言 要求变量的使用要严格符合规定,所有...
Java 线程创建与常用方法
进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO...
docker安装nacos 1.x版本
修改配置文件 ```properties server.contextPath=/nacos server.servlet.contextPath=/nacos server.port=8848 sp...