如何创建线程池?

//使用Executors工具类
ExecutorService poll1 = Executors.newCachedThreadPool();//创建无上限线程池,默认上限是INTEGER.MAX
ExecutorService poll2 = Executors.newFixedThreadPool(3);//创建指定上限的线程池
​
//自定义创建
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(最多可传入七个参数);
//七参构造方法:
public ThreadPoolExecutor(int corePoolSize,//核心线程数int maximumPoolSize,//最大线程数long keepAliveTime,//空闲时间(值)TimeUnit unit,//空闲时间(单位)使用TimeUnit指定,如秒:TimeUnit.SECONDSBlockingQueue<Runnable> workQueue,//阻塞队列,决定排队线程队列的长度,想要指定长度时:使用new ArrayBlockingQueue<>(3),如果不想指定多长可以用new LinkedBlockingQueue<>()ThreadFactory threadFactory,//创建线程的方式可以使用Executors.defaultThreadFactory()创建进行,源码中只不过是创建了一个Thread,但是进行了一系列的设置。RejectedExecutionHandler handler)//任务拒绝策列{}
//创建示例:
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3,6,60,TimeUnit.SECONDS,new LinkedBlockingQueue<>(),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());、
//调用submit()方法可以提交任务:
threadPoolExecutor.submit(实现Runnable或Callable的任务)//线程池默认不会关闭,需调用shutdown方法:
threadPoolExecutor.shutdown();

自定义线程的七大核心参数

自定义线程的几种情况:

情况一:

此时核心线程是3,最大线程是6,提交3个任务,此时线程池会创建三个线程,分别执行三个任务,不会创建临时线程。

情况2:

此时核心线程是3,最大线程是6,提交5个任务,此时线程池会创建三个线程去执行三个任务,剩下两个任务进行队列排队等待,不会创建临时线程。

情况3:

        此时核心线程是3,最大线程是6,队伍长度为3,提交8个任务,此时会先创建三个线程执行三个任务,并让接下来三个任务进行等待队伍,剩下了2个任务。因为此时核心线程在忙,等待队伍已满,所以此时会创建临时队列,线程4与线程5来执行任务7与任务8。

情况4:

        此时核心线程是3,最大线程是6,队伍长度为3,提交10个任务,此时会先创建三个线程执行三个任务,并让接下来三个任务进行等待队伍,剩下了3个任务。因为此时核心线程在忙,等待队伍已满,所以此时会创建3个临时队列,线程4、线程5和线程6来执行任务7、任务8和任务9.此时会剩下一个任务10,因为此时核心线程在忙,等待队伍已满,临时线程已经全部占用,就会触发任务拒绝策略。

针对任务拒绝策列有四种,默认是第一种(AbortPolicy)。

根据以上情况,此时剩下任务10未执行,四种策列执行情况如下:

AbortPolicy:将任务10丢弃,并抛出异常。

DiscardPolicy:将任务10丢弃,但是不抛异常。

DiscardOldestPolicy:将等待最久的抛弃,即丢弃等待队列的队首(任务4).

CallerRunsPolicy:不创建线程,直接在创建线程池的当前线程调用run()方法把任务给执行了。

自定义线程池多大合适?

最大并行数

通过代码可以调用当前系统Java可利用的最大并行数:

System.out.println(Runtime.getRuntime().availableProcessors());

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

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

相关文章

实战项目:仿muduo库实现并发服务器

目录 项目初始与项目演示HTTP服务器基础认识Reactor模式基础认识单Reactor单线程模式认识单Reactor多线程模式认识多Reactor多线程模式认识 目标定位总体大模块划分server模块的管理思想Buffer子模块Socket子模块Channel子模块Connection子模块Acceptor子模块TimerQueue子模块P…

建投数据人力资源系列产品获得欧拉操作系统及华为鲲鹏技术认证书

近日&#xff0c;经欧拉生态创新中心和华为技术有限公司测评&#xff0c;建投数据自主研发的人力资源管理系统、招聘管理系统、绩效管理系统、培训管理系统&#xff0c;完成了基于欧拉操作系统openEuler 22.03、华为鲲鹏Kunpeng 920&#xff08;Taisha 200&#xff09;的兼容性…

结合金融场景的Scipy模块编程

结合金融场景的Scipy模块编程 数据链接&#xff1a;https://pan.baidu.com/s/1VMh8-4IeCUYXB9p3rL45qw 提取码&#xff1a;c6ys import numpy as np import pandas as pd import statsmodels import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams[font.sans-se…

app逆向实战:某瓣7.18.0版本_sig参数抓包与破解

本篇博客旨在记录学习过程&#xff0c;不可用于商用等其它途径 入口 小组里面全部讨论数据列表 抓包 根据抓包结果&#xff0c;_sig参数是动态生成的&#xff0c;需要破解 查克 使用PKID查壳工具发现app并没有加固 参数源码定位 使用jadx打开apk&#xff0c;全局搜索…

基于FPGA的以太网设计(3)----详解各类xMII接口

1、什么是xMII接口 MII (Media Independent Interface)接口,即介质无关接口或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。“介质无关” 表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。 MII接口是MAC和PHY之间的通信接口,MAC产生…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十三)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 33 节&#xff09; P33《32.通知-进度条通知》 下载按钮对应的逻辑&#xff1a; 取消按钮对应的逻辑&#xff1a; 暂停按钮对应的…

MIT6.824(6.5840) Lab1笔记+源码

文章目录 其他人的内容&#xff0c;笔记写的更好&#xff0c;思路可以去看他们的MapReduceworkermapreduce coordinatorrpc纠错 源码worker.gocoordinator.gorpc.go 原本有可借鉴的部分 mrsequential.go&#xff0c;多看几遍源码 其他人的内容&#xff0c;笔记写的更好&#xf…

C++的STL简介

0.STL简介 C的STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的一部分&#xff0c;它提供了一套通用的类和函数模板&#xff0c;用于处理数据结构和算法。STL的主要组件包括&#xff1a; 容器分配器算法迭代器适配器仿函数 容器 容…

vscode 远程 Ubuntu 系统

1、在 Ubuntu 下检查 sshd 守护进程是否开启 ps -aux | grep sshd如果没有开启&#xff0c;请在 Ubuntu 下输入指令安装 sudo apt-get install openssh-server2、首先打开 Windows 下的 vscode&#xff0c;点击左下角图标打开远程窗口 3、打开远程窗口&#xff0c;选择“Con…

排序算法与复杂度介绍

1. 排序算法 1.1 排序算法介绍 排序也成排序算法&#xff08;Sort Algorithm&#xff09;&#xff0c;排序是将一组数据&#xff0c;依照指定的顺序进行排序的过程 1.2 排序的分类 1、内部排序&#xff1a; 指将需要处理的所有数据都加载到**内部存储器&#xff08;内存&am…

领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐

​在信息快速传播的时代&#xff0c;直播和视频创作成为了表达与交流的重要方式。对于追求卓越声音品质的创作者而言&#xff0c;一款性能卓越的无线麦克风宛如一把利剑。接下来&#xff0c;我要为大家介绍几款备受好评的无线麦克风&#xff0c;这些都是我在实际使用中体验良好…

EXCEL怎么自动添加表格吗?

第一步&#xff0c;选中需要添加表格的范围 第二步&#xff0c;点击开始&#xff0c;选择条件格式&#xff0c;“使用公式确定要设置格式的单元格” 第三步&#xff0c;编辑规则说明加上<>"" 第四步&#xff0c;点击边框&#xff0c;选择外边框确定即可&#x…

Adobe国际认证详解-动漫制作专业就业方向和前景

动漫制作专业的就业方向和前景随着创意产业的蓬勃发展而愈发广阔。这一专业涵盖了从角色设计、场景绘制到动画制作、特效合成等多个环节&#xff0c;是创意与技术相结合的典型代表。随着数字媒体和互联网的普及&#xff0c;动漫制作专业人才的需求正不断增长&#xff0c;为该专…

如何将mp4格式的视频压缩更小 mp4格式视频怎么压缩最小 工具软件分享

在数字化时代&#xff0c;视频内容成为信息传播的重要载体。然而&#xff0c;高清晰度的视频往往意味着较大的文件体积&#xff0c;这给存储和分享带来了一定的困扰。MP4格式作为目前最流行的视频格式之一&#xff0c;其压缩方法尤为重要。下面&#xff0c;我将为大家详细介绍如…

谷粒商城实战笔记-跨域问题

一&#xff0c;When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider u…

java中多态的用法

思维导图&#xff1a; 1. 多态的概念 多态通俗的讲就是多种形态&#xff0c;同一个动作&#xff0c;作用在不同对象上&#xff0c;所产生不同的形态。 例如下图&#xff1a; 2. 多态的实现条件 Java中&#xff0c;多态的实现必须满足以下几个条件&#xff1a; 1. 必须在继承…

MybatisPlus的使用与详细讲解

今天我们来讲解一下Mybatis的升级版&#xff0c;就是MybatisPlus. MybatisPlus是如何获取实现CRUD的数据库表信息的&#xff1f; 默认以类名驼峰转下划线作为表名 默认把名为id的字段作为主键 默认把变量名驼峰转下划线作为表的字段名 1.MybatisPlus中比较常见的注解 TableN…

Golang | Leetcode Golang题解之第241题为运算表达式设计优先级

题目&#xff1a; 题解&#xff1a; const addition, subtraction, multiplication -1, -2, -3func diffWaysToCompute(expression string) []int {ops : []int{}for i, n : 0, len(expression); i < n; {if unicode.IsDigit(rune(expression[i])) {x : 0for ; i < n &…

分类预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测

分类预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积支持向量机分类预测&#xff0…

Yolo-World在自定义数据集上进行闭集词汇训练推理过程(二)——使用ultralytics库训练模型

文章目录 概要训练整体流程推理整体流程 概要 之前的文章已经介绍了如何在本地使用源码的yolo-world进行本地化训练模型&#xff0c;具体请参考&#xff1a;Yolo-World在自定义数据集上进行闭集词汇训练过程 下边介绍一下基于ultralytics库训练yolo-world的方法&#xff0c;非常…