JAVA自定义线程大小和时间

Java高并发编程详解系列-线程池原理自定义线程池 之前博客的所有内容是对单个线程的操作,例如有Thread和Runnable的使用以及ThreadGroup等的使用,但是对于在有些场景下我们需要管理很多的线程,而对于这些线程的管理有一个统一的管理工具叫做线程池,线程池就是管理很多的线程的一个集合。这篇分享中提出的一个就是关于线程池的概念。 线程池原理   从JDK1.5开始,utils包提供了一个类ExecutorService,这个类是对线... 阅读详情

在工作中,一般需要我们自定义线程池,熟悉自定义线程池的创建。下面通过newSingleThreadExecutor的源码来查看如何自定义线程池

public static ExecutorService newSingleThreadExecutor() {
        return new FinalizableDelegatedExecutorService
            (new ThreadPoolExecutor(1, 1,
                                    0L, TimeUnit.MILLISECONDS,
                                    new LinkedBlockingQueue<Runnable>()));
    }

7大参数:
        1、corePoolSize:核心线程数,保证线程池最少有多少线程,并且不受keepAliveTime的影响。

        2、maximumPoolSize:最大线程数大小,当阻塞队列满了,就开启最大的线程池,并且受keepAliveTime的影响。

        3、keepAliveTime:保持存活的时间,例如:设置存活的时间为三秒,当可执行的线程少于等于核心线程数并且3秒也没有新线程进来。就会关闭新开的线程处理。

        4、TimeUnit:keepAliveTime的时间单位。

        5、BlockingQueue:阻塞队列,让新来的线程等待,要输入一个队列的大小。

        6、ThreadFactory:线程工厂,一般不用变。

        7、拒绝策略:当线程达到最大线程数并且阻塞队列也满后,通过所选的拒绝策略来处理新来的线程。
————————————————
 

	public static void main(String[] args) {

		// 自己
		ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 5, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<>(4),
				Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());

		try {
			for (int i = 0; i < 6; i++) {
				executor.execute(() -> {
					System.out.println(Thread.currentThread().getName() + "ok");
				});
			}
		} finally {
			executor.shutdown();
		}

	}

运行结果

 

通信模组性能调优 本文介绍了高通平台通信模组性能调优的方法,主要包括硬件加速技术和CPU负载优化。针对CPU负载优化,提出了内核RPS/RFS功能启用、网卡队列调整、中断均衡、CPU性能模式设置等措施。同时建议关闭热管理并加强散热,调整TCP接收/发送缓存大小以解决TCP异常报文问题。这些优化手段可显著提高整机吞吐率测试中的网络性能表现。 阅读详情

相关推荐

FAST-LIO2实战:如何在无人机上部署并实现厘米级定位(附ROS配置全流程)

本文详细介绍了如何在无人机上部署FAST-LIO2激光雷达惯性里程计系统,以实现厘米级精确定位。内容涵盖从硬件选型(如激光雷达与机载计算机)、软件环境配置(ROS Noetic)、传感器标定,到FAST-LIO2参数调优、与PX4飞控集成以及实际飞行测试的全流程。重点解决了实时定位中的外参标定、数据同步等关键问题,为无人机在无GPS或复杂光照环境下提供稳定可靠的定位解决方案。

weixin_29062865的博客 250

Java实现限定方法执行时间

使用Future类执行超时处理。

weixin_47766381的博客 2586

mipi deskew原理理解

何为skew, 从字面意思看是倾斜了,不对齐了;放在mipi的传输中意思就是clock lane和data lane 及data lane与data lane间出现了相位差;一旦出现相位差,大家采样数据时就可能不在同一个节拍上,会出现传输错误。所以就要做deskew,通过做deskew来使得大家重新对齐,在同一个节奏下传输数据. 一般当data rate高于1.5G时建议开启deskew。

lx123010的专栏 8093

java 设置 某个线程 执行时间

如何设置Java线程的执行时间 一、整体流程 为了设置Java线程的执行时间,我们可以通过设置一个定时器来控制线程的执行时间。以下是具体的步骤: 步骤 描述 1 创建一个线程 2 创建一个定时器 3 在定时器中设置线程的执行时间 4 启动线程 5 等待线程执行完成 6 在定时器中中断线程的...

weixin_30269739的博客 406

UWB定位进阶:如何利用DW1000的CIR数据做NLOS信号识别?

本文深入探讨了如何利用DW1000芯片的信道脉冲响应(CIR)数据进行非视距(NLOS)信号识别,以提升UWB定位精度。通过分析CIR数据的核心价值、预处理方法、特征提取技术以及机器学习模型构建,为研究人员和工程师提供了实用的解决方案,帮助克服室内定位中的NLOS挑战。

weixin_28729205的博客 474

C# chart以鼠标所在位置为中心进行缩放

以前都用labview做一些软件,但给出去总是会遇到版本,安装包过大等一些问题,于是想自学C#,记录一下使用过程中遇到的一些问题和解决措施,便于日后回顾。 在这个项目中需要绘制折线图,由于数据比较大,需要对图表进行缩放操作,以鼠标为中心对图表进行缩放,在网上查找了一些资料没找到我想要的,于是自己想了一个解决方案,可以基本实现,但略显繁琐,由于刚开始学习C#,对一些操作不太了解,若以后遇...

fei的博客 6363

JAVA限制长时任务执行时间

在一个项目中,要求对一个长时间执行的任务,限制最多等待6秒,如果超过6秒,不管任务是否执行完,都要返回,同事用的是UrlHttpConnection,通过http请求自己的任务,通过设置httpconnect的超时时间来实现,个人觉得这样做很傻,自己提供的服务,还用http请求的方式做。 后来了解到JDK1.5就提供了Future类,可以实现这个需求,具体如下: private static String invoke(String phoneNum) throws Ex...

u012007592的博客 2988

Ansys -PEmag 平面变压器仿真与circuit电路模型验证

ansys 软件集成了电路、磁路、PCB参数提取,结构参数提取等功能仿真,基于内置模块的功能参数的仿真后可以提取出主要关键参数,寄生参数,频域响应参数等。该软件的优势在于能够将所有的仿真参数导出为电路模型文件,可以在自带的模块中仿真也可以导出在其他第三方软件中仿真,比如matlab-simulink文件扥。主要介绍ANSYS插件的使用,对PEmag做了详细使用说明并通过案例得到对用的变压器参数;基于变压器参数再将其磁路模型导入到电路中进行建模仿真,实现PEmag与circuit的联合仿真。

weixin_41609745的博客 3016

Java自定义线程池-记录每个线程执行耗时

  ThreadPoolExecutor是可扩展的,其提供了几个可在子类化中改写的方法,如下: protected void beforeExecute(Thread t, Runnable r) { } protected void afterExecute(Runnable r, Throwable t) { } protected void terminated() { } ...

weixin_34007020的博客 769

kettle写doris操作

文件在目录:doris-master\extension\kettle\assemblies\plugin\target\doris-stream-loader-plugins-9.4.0.0-343.zip。官方提供了doris stream load插件,下载源码编译后放到kettle的插件目录即可使用。地址:https://github.com/apache/doris.git。注意:需要doris插件或者kettle转换生成模板的私聊博主。使用PDmaner同步业务库生成建表语句。

weixin_44449054的博客 3030

JavaScript实现斗地主(附完整源码)

JavaScript实现斗地主(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1503

Java线程超时控制-记录案例

单独启线程来获取futuretask的结果,近似理解为开个线程监控业务逻辑的返回值。

一个博客 1661

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

java自定义线程_java自定义线程池

如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。首先我们从最核心的ThreadPoolExecutor类中的方法讲起。java.uitl.concurrent....

weixin_36150766的博客 376

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java 线程池控制多线程_Java ExecutorService四种线程池及自定义ThreadPoolExecutor机制...

一、Java 线程池Java通过Executors提供四种线程池,分别为:1、newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。(线程最大并发数不可控制);线程池为无限大,当执行第二个任务时若第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。2、newFixedThreadPool:创建一个定长线...

weixin_42521058的博客 216

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java线程池

可以使用类来创建自定义线程池,该类提供了更多的参数来配置线程池的行为。: 核心线程池大小,即线程池中保持的最小线程数。: 最大线程池大小,即线程池中允许的最大线程数。: 非核心线程的空闲线程存活时间。unit: 存活时间的时间单位。workQueue: 任务队列,用于保存等待执行的任务。: 用于创建新线程的工厂。: 拒绝策略,用于处理任务添加到线程池被拒绝的情况。

jiangjiang888888的博客 376

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java基础之java线程池

例如,LinkedBlockingQueue 和 ArrayBlockingQueue 都是阻塞队列的实现,但前者具有无限容量,而后者则需要指定固定容量。而 CallerRunsPolicy 策略会将任务交给当前线程来执行,这样可能会对系统造成更大的负担,可以使用 DiscardPolicy 或其他合适的策略来避免这种情况。它提供了多种可配置的构造参数,以满足不同的业务需求。每个任务会输出自己的编号和执行线程的名字,然后模拟一个耗时 1 秒的任务执行过程,并在任务完成后再输出一条消息。

m0_64332518的博客 143

Java自定义线程池的属性

Java自定义线程池的属性包括: 线程池大小:线程池中维护的线程数量,包括活动线程和非活动线程。 核心线程数:线程池中持久存在的线程数,即使它们处于闲置状态,也不会被回收。 最大线程数:线程池中允许存在的最大线程数,超过这个数量的线程将被阻塞,等待其他线程完成任务后释放。 阻塞队列:当线程池中的线程数量达到最大值时,新来的任务会被放入阻塞队列中,等待线程池中的线程腾出位置。 存活时间:线...

weixin_42610671的博客 184

springboot 线程池_Spring boot 2 线程池怎么配置

线程池在java 中线程池,就是ThreadPoolExecutor来构造,简单看下线程池包含的方法,corePoolSize:初始化线程。线程池中保留的线程数量。maximumPoolSize :最大线程池的数量。这个是与队列有关系,只有队列存放满后,才会增加线程数量。keepAliveTime:临时开启的线程,存活时间。(maximumPoolSize-corePoolSize)workQue...

weixin_39600291的博客 819

创建线程池的常用三种方法

package ThreadPool; import java.util.concurrent.*; /** * 创建线程池的三种常用方法 */ public class ThreadPoplDemo { public static void main(String args[]) { CreateThreadPool1 (); } public...

小胡的博客 1143

java多线程之线程池

在执行一个异步任务或并发任务时,往往是通过直接new Thread()方法来创建新的线程,这样做弊端较多,更好的解决方案是合理地利用线程池,线程池的优势很明显,如下: 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗...

程序员一博 4778

10.彻底搞懂Java线程池

彻底搞懂Java线程池 文章目录彻底搞懂Java线程池三大方法三大方法代码实现7大参数三大方法源码分析七大参数图解:手动创建一个线程池4种拒绝策略小结和拓展 彻底搞懂线程池只需要知道线程池中:三大方法、7大参数,4中拒绝策略 池化技术 程序的运行,本质:占用系统的资源!优化资源的使用!==>池化技术 线程池,连接池,对象池 池化技术:事先准备好资源,有人要用,就来我这里拿,用完之后还给我 线程池的好处: 1.降低资源的消耗 2.提高响应速度 3.方便管理 线程复用、可以控制最大并发数、管理线程 三大

yuan_boss的博客 1729

【JUC】线程池

它将核心线程数和最大线程数设置值相同,并且非核心线程的空闲时间设置为0,因为根本就没有非核心线程,全是核心线程,并且采用的是一个无界的LinkedBlockingQueue作为等待队列。我们最终发现,该方法也是通过调用7个参数的线程池构造方法来创建的线程池。线程池在执行任务的过程中如果抛出了异常,那么线程池就会销毁这个线程。除了自己创建线程池这一方法,我们也可以使用。

Decade_Faiz的博客 571

java培训自定义 ThreadPoolExecutor 线程池

使用的构造方式为 new ThreadPoolExecutor(var0, var0, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue()) 设置了corePoolSize=maxPoolSize,keepAliveTime=0(此时该参数没作用),无界队列,任务可以无限放入,当请求过多时(任务处理速度跟不上任务提交速度造成请求堆积)可能导致占用过多内存或直接导致OOM异常_java培训。...

weixin_45695430的博客 265

java获取队列长度_关注Java线程池的任务队列长度

关注Java线程池的任务队列长度Java 5.0 就开始自带线程池的实现,其中固定大小的线程池,对普通使用还是很好用的。就是 Executors.newFixedThreadPool ,指需要指定一个大小数目就可以。相对于其他几种方式,易于实现高效稳定的服务器。但是好用归好用,一些需要非常细心的问题,还是需要关注的,尤其是高并发场景,7*24不间断运行场景下。本文就是把这些地方记录下来,在设计和实...

weixin_39610785的博客 3108

线程池ThreadPoolExecutor类

是的

Session_s的博客 211
上一篇: Eclipse更改字体大小设置
下一篇: RestTemplate 用法详解
WSYFQ
博客等级 码龄10年 17粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值