SynchronousQueue的基本介绍

news2024/11/17 5:54:47

SynchronousQueue介绍

SynchronousQueue作为阻塞队列,区别于其他的阻塞队列。因为他不存储元素,但是存储消费者或者生产者。要是SynchronousQueue队列中存储了一个生产者,再来一个生产者想存放到队列中,要是你使用的是put方法,那么就会阻塞。
生产者在SynchronousQueue队列中存在几种结果:
1.如果在阻塞期间有消费者来消费,生产者就会将阻塞的信息交给消费者消费。
2.生产者会阻塞等待结果。要是不允许阻塞那就直接失败。
3.生产者在阻塞期间,要是发生线程中断那就结束了。
消费者和生产者的逻辑效果是一样的。
生产者和消费者的数据是直接传递的,不会经过SynchronousQueue。SynchronousQueue也不会存储数据,只是作为一个数据交换的媒介!

生产者和消费者的基本方法

生产者:
offer()方法,不带有时间参数的是将消息放到SynchronousQueue队列的时候,要是存在消费者在等待消息,那就直接配对。要是没有消费者在等待消息。那就直接返回,886!
offer()方法带有时间参数的,生产者将消息放到SynchronousQueue,还是要是存在消费者等待消息,那就直接配对成功好了,要是没有消费者等待消息,那就阻塞等到time时间,要是还是没有消费者来,那就886!!!
put方法则是生产者将消息放到SynchronousQueue队列中。要是存在消费者等待,那配对成功,要是没有消费者等待,那就死等着,倔的很。
消费者:
poll()方法,不带有时间参数的是去从SynchronousQueue队列中消费信息,要是存在那就直接配对。要是没有生产者生产消息,那就直接返回886。
poll()方法带有时间参数的,消费者去SynchronousQueue队列中消费消息,要是此时此刻存在生产者生产消息,那太好了。直接配对。要是此时此刻没有生产者生产消息。那就阻塞等待time的时间,要是还是没有那就886。
take()方法是消费者去SynchronousQueue消费消息,要是没有生产者生产消息,我就死等!!!!

效果演示

  • 创建一个SynchronousQueue队列,该队列不存储数据没有长度的概念。默认是false,栈实现
    在这里插入图片描述

生产消息的效果演示
在这里插入图片描述
生产者生产完立刻走,消费者来不及遇见,拿取不到数据
在这里插入图片描述
通过主线程创建一个子线程,然后子线程丢数据进队列,并让主线程休眠100毫秒。确保下一个新的子线程创建出来的时候上一个子线程一定已经将数据丢进队列中。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python自动编号教程:如何给数据添加自动编号

Python自动编号教程:如何给数据添加自动编号 在进行数据处理和整理过程中,有时候需要为数据添加自动编号才能更好地进行分析和展示。而使用Python编程语言可以快速而准确地实现自动编号的功能。在本篇教程中,我们将介绍如何使用Python处理数…

网络层:IPv4数据报的首部格式

1.IPv4数据报的首部格式 笔记来源: 湖科大教书匠:IPv4数据报的首部格式 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 下图来源:以太网MAC帧格式 IP数据报属于MAC帧的数据部分 IPv4数据报的首部格式 1.1 IP数…

VS2019编译GSL

VS2019 编译GSL 下载GSL:https://github.com/BrianGladman/gsl,此仓库带有用于编译的VS解决方案。 解压后,在 build.vc 目录下有两个解决方案: gsl.dll.sln 用于编译生成动态库gsl.lib.sln 用于编译生成静态库 请先阅读 build…

haproxy服务器对nginx服务器web服务调度负载均衡、用nfs做共享目录(脚本部署)

目录 一、准备 二、在作为haproxy的服务器上导入以下shell执行haproxy安装 三、由于nginx服务需要用的nfs共享目录,先部署nfs 四、nginx服务器1部署 五、nginx服务器2部署同上 六、测试 一、准备 四台服务器 系统IP搭建服务器centos7192.168.1.12haproxycent…

深度学习经典trick汇总

深度学习经典trick汇总 trick这个词或许有投机取巧的意味,但深度学习论文中出现的很多这个trick确实对模型更方面性能有所提高,而且它们中的很多还具有普适性,那么这种“trick“或许应该被叫做“技术”。 1. 权重衰减 θ t 1 ( 1 − ω α…

DHCP服务器

文章目录 DHCP服务器DHCP的工作原理DHCP服务器的用途DHCP协议的工作方式DHCP服务器给予客户端固定或动态的IP参数关于租约所造成的问题与租约期限多台DHCP服务器在同一物理网段的情况 何时需要架设DHCP服务器使用DHCP的时机不建议使用DHCP主机的时机 DHCP服务器端的配置所需软件…

Quantum Utility!IBM开辟“量子计算的实用时代”

光子盒研究院 今天,IBM(纽约证券交易所股票代码:IBM)宣布了一项新的突破,并发表在科学杂志《自然》的封面上。 ——团队首次证明了量子计算机可以在100多个量子比特的规模上产生精确的结果;并且至少在一种计…

Redis入门 - 基础通用指令

原文首更地址,阅读效果更佳! Redis入门 - 基础通用指令 | CoderMast编程桅杆https://www.codermast.com/database/redis/base-commind.html 在正式介绍Redis数据结构及其操作指令之前,我们需要先掌握一些最基础的通用指令。 这些都是Redis…

鸟类识别Python,基于TensorFlow卷积神经网络【实战项目】

一、介绍 鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,…

chatgpt赋能python:Python自动获取图片数据的方法

Python自动获取图片数据的方法 随着信息时代的到来,图像数据已经越来越重要。我们如何从互联网上获取大量的图片数据呢?Python提供了简单而直接的方法。本文将介绍如何使用Python自动获取图片数据,充分利用Python的编程能力,开展…

异常的相关知识

📢博客主页:盾山狂热粉的博客_CSDN博客-C、C语言,机器视觉领域博主📢努力努力再努力嗷~~~✨ 💡大纲 ⭕总结了python中所有可能的异常情况,有异常不一定是坏事,有提醒作用 一、常见异常 💡可以…

Midjourney命令列表Command List介绍

您可以通过键入命令与Discord上的Midjourney Bot进行交互。命令可以用来生成图像、更改默认设置、监看用户信息以及执行其他有用的任务。 Midjourney 命令可以在任何Bot Channel中使用,在允许 Midjourney Bot 运行的私有 Discord 服务器上使用,或者在与…

Java项目开发基本数据类型与封装数据类型的选择

问题 Java项目开发基本数据类型与封装数据类型的选择 详细问题 关于基本数据类型与封装数据类型的区别,作为面试经典题目已被熟知,但是,项目开发时,对于一个变量,是选择基本数据类型,还是封装数据类型&a…

【SpringBoot】SpringBoot案例 | Web后端开发

黑马2023JavaWeb的B站视频,还可以,学的大部分都是有用的东西。没有一上来还JDBC。 新建项目、更改application.properties配置: spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:…

定时任务执行时间设置详解

目录 前提实践举例定时任务执行时间设置详解定时器包含的子表达式和对应子表达式允许的值子表达式中特殊字符含义的解释和相应示例 前提 一般在处理业务过程中,都需要在特定的时间点执行特定的任务,尤其是业务复杂且执行时间很长,业务之间关…

java中的时间

一、JDK7的类 (1)Date 时间 (2)SimpleDateFormat 格式化时间 (3)Calendar 日历 格林尼治时间(Greenwich Mean Time),简称GMT。 目前的世界标准时间(UTC)以替换…

C++的友元函数、友元类、内部类

目录 1.友元函数 1.定义 2.注意 2.友元类 1.定义 3.内部类(Java喜欢用,C不怎么用) 1.定义 特性: 1.友元函数 1.定义 1.友元函数可访问类的私有和保护成员,但不是类的成员函数。 2.友元函数不能const修饰 3.…

Rust语言从入门到入坑——(4)Rust语法(上)

文章目录 0 引入1、基础语法1.1、变量1.2、常量1.3、重影 2、数据类型2.1、整形2.2、浮点型2.3、其他2.注释与打印2.1 注释2.2、打印 3、总结 0 引入 在这里我们需要介绍Rust语法,一共分三部分,第一部分是基础语言,和C语言类比,如…

从零构建后端项目-创建SpringBoot项目配置MyBatis

目录 主体介绍 创建SpringBoot项目主要步骤 配置MyBatis 整合高级功能 创建SpringBoot项目 配置Tomcat 配置MySQL数据源 配置Redis数据源 配置MongoDB数据源 运行项目,检测配置 配置MyBatis 创建IDEA数据库连接 生成MyBatis各种文件 配置MyBatis 配…

总结902

目标规划: 月目标:6月(线性代数强化9讲,考研核心词过三遍) 周目标:线性代数强化5讲,英语背3篇文章并回诵,检测 每日规划 今日已做 1.背诵前21篇短文,默写了10篇文章。…