ThreadPoolExecutor带来的性能问题

使用线程池,一般情况下会带来性能提升,并且使用线程池管理线程,减少了每个任务调用的开销,通常可以在执行大量异步任务时提供增强的性能。 但是在高并发的情况下,会因为使用不当导致性能下降,并且下降得比较严重,下面来讲解一下原因。 ThreadPoolExecutor是jdk1.5版本增加的,在java.util.concurrent包中。 构造方法摘要 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue) 各个参数说明: corePoolSize - 池中所保存的线程数,包括空闲线程。 maximumPoolSize - 池中允许的最大线程数。 keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。 unit - keepAliveTime 参数的时间单位。 workQueue - 执行前用于保持任务的队列。 在系统设计时,采用了ArrayBlockingQueue,防止资源耗尽带来的系统问题,但是这个队列在高并发的情况下,会因为线程的上下文切换开销,导致队列排队,任务频繁阻塞,从而导致系统出现严重的性能问题。
原文地址:https://www.cnblogs.com/zhuitian/p/11248010.html