合理的配置线程池线程数

1.合理的配置线程池线程数

要想合理的配置线程池,就必须首先分析任务特性,可以从以下几个角度来进行分析:

  1. 任务的性质:CPU密集型任务,IO密集型任务和混合型任务。
  2. 任务的优先级:高,中和低。
  3. 任务的执行时间:长,中和短。
  4. 任务的依赖性:是否依赖其他系统资源,如数据库连接。
任务性质不同的任务可以用不同规模的线程池分开处理。CPU密集型任务配置尽可能小的线程,如配置Ncpu+1个线程的线程池。IO密集型任务则由于线程并不是一直在执行任务,则配置尽可能多的线程,如2*Ncpu。混合型的任务,如果可以拆分,则将其拆分成一个CPU密集型任务和一个IO密集型任务,只要这两个任务执行的时间相差不是太大,那么分解后执行的吞吐率要高于串行执行的吞吐率,如果这两个任务执行时间相差太大,则没必要进行分解。我们可以通过Runtime.getRuntime().availableProcessors()方法获得当前设备的CPU个数。

2、线程池的监控:

我们可以通过线程池提供的参数进行监控。线程池里有一些属性在监控线程池的时候可以使用

  • taskCount:线程池需要执行的任务数量。
  • completedTaskCount:线程池在运行过程中已完成的任务数量。小于或等于taskCount。
  • largestPoolSize:线程池曾经创建过的最大线程数量。通过这个数据可以知道线程池是否满过。如等于线程池的最大大小,则表示线程池曾经满了。
  • getPoolSize:线程池的线程数量。如果线程池不销毁的话,池里的线程不会自动销毁,所以这个大小只增不减。
  • getActiveCount:获取活动的线程数。

通过扩展线程池进行监控。通过继承线程池并重写线程池的beforeExecute,afterExecute和terminated方法,我们可以在任务执行前,执行后和线程池关闭前干一些事情。如监控任务的平均执行时间,最大执行时间和最小执行时间等。这几个方法在线程池里是空方法




参看:http://www.infoq.com/cn/articles/java-threadPool/
          http://blog.csdn.net/great_smile/article/details/48898879
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程池是一种常见的多线程处理方式,它可以提高程序的并发性和效率。合理配置线程池可以更好地利用系统资源,提高程序的性能。以下是一些常见的线程池及其配置建议: 1. 核心线程(corePoolSize):核心线程线程池中最基本的参,它表示线程池中一直存活的线程数量。当线程池中的线程小于核心线程时,线程池会优先创建新线程处理任务。建议根据系统的负载情况和处理任务的类型来设置核心线程,一般情况下可以设置为CPU核心的2倍。 2. 最大线程(maximumPoolSize):最大线程线程池中最多能够容纳的线程数量。当线程池中的线程达到最大线程时,新的任务将会被阻塞。建议根据系统的负载情况和处理任务的类型来设置最大线程,一般情况下可以设置为CPU核心的4倍。 3. 空闲线程存活时间(keepAliveTime):空闲线程存活时间是指当线程池中的线程大于核心线程时,空闲线程的存活时间。建议根据系统的负载情况和处理任务的类型来设置空闲线程存活时间,一般情况下可以设置为1分钟。 4. 队列容量(queueCapacity):队列容量是指线程池中任务队列的最大容量。建议根据系统的负载情况和处理任务的类型来设置队列容量,一般情况下可以设置为CPU核心的10倍。 5. 拒绝策略(rejectedExecutionHandler):拒绝策略是指当线程池中的线程达到最大线程并且队列已满时,新的任务的处理方式。常见的拒绝策略有AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy和DiscardPolicy。建议根据系统的负载情况和处理任务的类型来选择合适的拒绝策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值