线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue

使用方法:

private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime().availableProcessors() * 2, 0, TimeUnit.MILLISECONDS, new SynchronousQueue<>(), r -> new Thread(r, "ThreadTest"));
1.SynchronousQueue

SynchronousQueue没有容量,是无缓冲等待队列,是一个不存储元素的阻塞队列,会直接将任务交给消费者,必须等队列中的添加元素被消费后才能继续添加新的元素。

拥有公平(FIFO)和非公平(LIFO)策略,非公平侧罗会导致一些数据永远无法被消费的情况?

使用SynchronousQueue阻塞队列一般要求maximumPoolSizes为无界,避免线程拒绝执行操作。

private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime().availableProcessors() * 2, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), r -> new Thread(r, "ThreadTest"));
2.LinkedBlockingQueue

LinkedBlockingQueue是一个无界缓存等待队列。当前执行的线程数量达到corePoolSize的数量时,剩余的元素会在阻塞队列里等待。(所以在使用此阻塞队列时maximumPoolSizes就相当于无效了),每个线程完全独立于其他线程。生产者和消费者使用独立的锁来控制数据的同步,即在高并发的情况下可以并行操作队列中的数据。

private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime().availableProcessors() * 2, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(32), r -> new Thread(r, "ThreadTest"));
3.ArrayBlockingQueue

ArrayBlockingQueue是一个有界缓存等待队列,可以指定缓存队列的大小,当正在执行的线程数等于corePoolSize时,多余的元素缓存在ArrayBlockingQueue队列中等待有空闲的线程时继续执行,当ArrayBlockingQueue已满时,加入ArrayBlockingQueue失败,会开启新的线程去执行,当线程数已经达到最大的maximumPoolSizes时,再有新的元素尝试加入ArrayBlockingQueue时会报错。
————————————————
版权声明:本文为CSDN博主「无名后生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26881739/article/details/80983495

转载于:https://www.cnblogs.com/zeenzhou/p/11573120.html

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

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

相关文章

全志_外部中断

全志_外部中断 平台&#xff1a;全志A64 源码&#xff1a;Android 7.1  Linux3.1 1 #include <linux/init.h>2 #include <linux/module.h>3 #include <linux/fs.h>4 #include <linux/device.h>5 #include <linux/slab.h>6 #include <linux/…

又要开始工作了

“出来混&#xff0c;迟早要还的&#xff01;”&#xff0c;用在工作与休息上也是一样&#xff0c;累积下来的事情真让人身心疲惫&#xff0c;幸好过去的这几天精神还不错&#xff0c;竟然好像要治好我赖床的毛病了。看起来&#xff0c;精神上的压力会比身体上的压力对人的摧残…

[ZJOI2007]时态同步 树形DP

题意&#xff1a;给定一棵N个节点的无根树&#xff0c;每条边都有一个权值V&#xff0c;选取其中一个点作为关键点&#xff0c;你可以任意增加某条边的权值&#xff0c;求使得从关键点出发&#xff0c;到任意一个叶子节点的距离都相同所需要增加的权值和。 数据范围&#xff1a…

apache ,php,mysql的安装

apache.org 下载安装apache php.net 下载php&#xff0c;解压缩&#xff08;注意拷贝dll到windows/system32&#xff0c;并且拷贝php.ini到windows文件夹&#xff0c;修改extention-dir&#xff0c;和对mysql的支持&#xff09; mysql.com 下载安装mysql 安装顺序也是apache&am…

题解P3942_将军令

初始数组忘了赋初值&#xff0c;&#xff0c;&#xff0c;我真是个机灵鬼 还有这题是三倍经验P2279&&P2016&#xff0c;这题的实现思想来自P2279首个题解 luogu 简化题意 给你一棵树&#xff0c;你有一些可以覆盖范围为$k$的障碍物&#xff0c;问最少放几个障碍物可以使…

Hitv8 文件批量重命名工具

本工具用于单文件或批量文件文件名、文件类型扩展名重命名的小工具&#xff0c;欢迎使用&#xff01;使用说明&#xff1a; 1、使用拖放方式&#xff0c;将文件拖入列表框即可 2、可以不输文件名&#xff0c;表示文件名不变&#xff0c;只改类型&#xff1b; 类型也可以自已输入…

[SCOI2009]生日礼物 单调性尺取法

题意&#xff1a;给你n个k种颜色的点&#xff0c;每个点都有坐标和颜色两个属性&#xff0c;选出一个长度尽量短的区间&#xff0c;使得每种颜色的点都在区间内出现。 数据范围&#xff1a; 对于50%的数据&#xff0c; N≤10000&#xff1b; 对于80%的数据&#xff0c; N≤8000…

就算忘了自己也忘不了你

就算忘了自己也忘不了你——代腾飞 2009年4月24日 于成都曾经你说要我紧紧地抱住你让我们的两颗心能紧贴在一起用你的柔情将他们水浮交融彼此渗透到对方的心底我毫不犹豫照做 曾经你说你要用你的脚轻轻放在我的胸膛上你好走到离我心最近的地方让你的脚印镌刻在我的心里成为不…

PJ2018T4 对称二叉树 树形结构

题意&#xff1a;现在给出一棵二叉树&#xff0c;希望你找出它的一棵子树&#xff0c;该子树为对称二叉树&#xff0c;且节点数最多。请输出这棵子树的节点数。对称二叉树满足&#xff1a;将这棵树所有节点的左右子树交换后&#xff0c;新树和原树对应位置的结构相同且点权相等…

Flex的事件(十四)

一、 关于键盘事件<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />程序响应一个按键或一系列按键并执行一些动作&#xff0c;例如Controlq退出程序。Flex支持所有来自后台操作系统的所有组合键操作&#xff0c;它同样允许你覆…

EditPlus构建轻量级编译环境

你还在为机子跑VS&#xff0c;VC6.0吃力而苦恼吗&#xff1f;最近发现网上一个小窍门&#xff0c;就是用EditPlus文本编辑器构建轻量级编译环境&#xff0c; 轻量级的东西就是受人喜欢&#xff0c;要不说Spring能流行起来呢。最近自学C#&#xff0c;有了Java思想&#xff0c;加…

OCP-052考试题库汇总(58)-CUUG内部解答版

In one of your databases: 1.USER1 and USER2 have no system privileges. 2.ROLE1 only has these privileges: ?CREATE SESSION ?CREATE TABLE ?CREATE VIEW Examine these commands: SQL> conn / as sysdba Connected. SQL> GRANT create table, role1 TO user1 W…

提高ASP.Net应用程序性能的十大方法

一、返回多个数据集 检查你的访问数据库的代码&#xff0c;看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集&#xff0c;可以减少与数据库通信的时间&#xff0c;使你的系统具有扩展性&#xff0c;…

【NOIP2015提高组】子串 区间DP+滚动数组优化

题意&#xff1a; 有两个仅包含小写英文字母的字符串 A 和 B。 现在要从字符串 A 中取出 k 个互不重叠的非空子串&#xff0c;然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的字符串。 请问有多少种方案可以使得这个新串与字符串 B 相等&#xff1f; …

教你如何去淘便宜机票

机票四月二十日集体变相涨价后&#xff0c;中央电视台曾经报道&#xff0c;今后没有5折以下机票&#xff0c;今后也不再叫多少折&#xff0c;而是直接报价&#xff0c;但是春秋航空不再此之列&#xff0c;原因是这次变相提价是一个叫中航信公司在操作&#xff0c;他们不代理春秋…

使用kibana或postman操作Elasticsearch的常用命令

前言服务器&#xff1a;CentOS-6.7 运行系统&#xff1a;windows10 JDK版本&#xff1a;1.8 Elasticsearch版本&#xff1a;5.6.6 插件&#xff1a;kibana、elasticsearch-head 工具&#xff1a;postman 一、集群查看集群是否健康 GET /_cluster/health二、节点查看节点列表后面…

asp.net 实现一级域名与二级域名共享COOKIE

COOKIE可以自动由子级域名分享&#xff0c;无须做什么特别设置。对网站www.abc.com&#xff0c;check.abc.com来说&#xff0c;它们都是二级域名&#xff0c;一级域名是abc.com。所以&#xff0c;保存COOKIE的时候&#xff0c;将Cookie的Domain设置成“.abc.com”&#xff0c;无…

32位单精度浮点乘法器的FPGA实现

摘 要: 采用Verilog HDL语言, 在FPGA上实现了32位单精度浮点乘法器的设计, 通过采用改进型Booth编码&#xff0c;和Wallace 树结构, 提高了乘法器的速度。本文使用Altera Quartus II 4.1仿真软件, 采用的器件是EPF10K100EQ 240 -1, 对乘法器进行了波形仿真, 并采用0.5CMOS工艺…

Elasticsearch修改字段之别名,扩展数据迁移

https://blog.csdn.net/amaranth__/article/details/84497075 转载于:https://www.cnblogs.com/zeenzhou/p/11588599.html

网工视频13第13章.计算机系统开发运行与配置疑难问题

网工视频请留下你的邮箱&#xff0c;我给你发邮件。转载于:https://blog.51cto.com/ricebetter2010/155609