ThreadPoolExecutor带来的性能问题

匿名 (未验证) 提交于 2019-12-02 23:52:01
使用线程池,一般情况下会带来性能提升,并且使用线程池管理线程,减少了每个任务调用的开销,通常可以在执行大量异步任务时提供增强的性能。 但是在高并发的情况下,会因为使用不当导致性能下降,并且下降得比较严重,下面来讲解一下原因。 ThreadPoolExecutor是jdk1.5版本增加的,在java.util.concurrent包中。 构造方法摘要 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue) 各个参数说明: corePoolSize - 池中所保存的线程数,包括空闲线程。 maximumPoolSize - 池中允许的最大线程数。 keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。 unit - keepAliveTime 参数的时间单位。 workQueue - 执行前用于保持任务的队列。 在系统设计时,采用了ArrayBlockingQueue,防止资源耗尽带来的系统问题,但是这个队列在高并发的情况下,会因为线程的上下文切换开销,导致队列排队,任务频繁阻塞,从而导致系统出现严重的性能问题。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!