线程池的核心参数以及执行流程

线程池的核心参数:

int corePoolSize,                                                             //核心线程数量。
int maximumPoolSize,                                                    //最大线程数量。
long keepAliveTime,                                                       //线程存活时间。
TimeUnit unit,                                                                 //存活时间的单位。
BlockingQueue<Runnable> workQueue,                       //工作队列。
ThreadFactory threadFactory,                                        //线程工厂。
RejectedExecutionHandler handler                                //拒绝策略。

执行任务的流程:

1.有任务时,先启动核心线程数量的线程去执行。
2. 当核心线程消耗完后,把任务存入工作队列中。
3. 当工作队列存满以后,会启动最大线程数量的线程去执行任务。
4. 当线程数量达到最大线程数量的时候(这时工作队列也已存满任务),还有任务,则启动拒绝策略。
5.long keepAliveTime(线程存活时间):达到该时间后,会把空闲的线程(大于核心线程数量的线程)回收。

JVM(Java Virtual Machine)调优主要是为了优化程序的性能和资源使用效率。以下是几个关键的JVM调优策略: 1. **堆内存设置**:JVM的大部分内存都在堆上。你可以根据应用需求调整-Xms(初始堆大小)和-Xmx(最大堆大小)。如果频繁出现Full GC,可能是堆过大或者内存泄漏,需要适当增大初始堆或使用XX:NewRatio调整新生代和老年代比例。 2. **年轻代和老年代**:年轻代(Eden、Survivor)用于处理短生命周期的对象,老年代存储长期存在的对象。可以尝试采用分区策略(XX:SurvivorRatio)或永久代(在JDK 7及以后版本中废弃)来优化。 3. **垃圾回收策略**:包括Serial、Parallel、Concurrent Mark Sweep (CMS)、G1等,选择适合的垃圾回收器对并发性能有很大影响。例如,CMS适用于需要低停顿时间的应用,而G1则兼顾了性能和停顿时间。 4. **并发级别**:通过-Xss设置每个线程的栈大小,调整-Xnum threads(线程)以平衡CPU核心和工作负载。 5. **线程池优化**: - 线程池组件是JUC(java.util.concurrent)的一部分,如ThreadPoolExecutor。它的核心参数包括核心线程(corePoolSize)、最大线程(maximumPoolSize)、队列容量(workQueue)、保持空闲线程最大时间(keepAliveTime)和拒绝策略(RejectedExecutionHandler)。 - 可以通过监控任务提交速率、平均响应时间和线程状态调整参数,比如调整queue capacity防止阻塞,或调整核心线程以适应变化的需求。 6. **JMX和VisualVM**:使用这些工具监控JVM性能指标(如CPU、内存使用、线程状态等),发现瓶颈并进行微调。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值