Java 线程池 ThreadPoolExecutor 实现原理剖析 (查看原文)

引言在Java中,使用线程池来异步执行一些耗时任务是非常常见的操作。最初我们一般都是直接使用new Thread().start的方式,但我们知道,线程的创建和销毁都会耗费大量的资...

github.com   
评论 (3)
Default avatar

u489338 2018-09-09 14:14

keepAliveTime。如果当前线程池中的线程数超过了corePoolSize,那么如果在keepAliveTime时间内都没有新的任务需要处理,那么超过corePoolSize的这部分线程就会被销毁。默认情况下是不会回收core线程的,可以通过设置allowCoreThreadTimeOut改变这一行为。 请问这个core线程是指?
Default avatar

u489338 2018-09-09 14:19

core线程指线程池里满足corePoolSIze的线程数?是否构建线程池的时候传一个超时时间就会自动调用你说的allowcoreThreadtineout 这个方法?
Thumb

u398699 2019-01-10 22:07

线程在系统里一视同仁,区分不出来核心和非核心,之所以可以实现保存核心线程数,是通过两个方法实现的,一个线程去队列里取任务,有两个方法,一个是take,一个是Poll,Poll方法是需要传阻塞时间的,超过了时间就不取了,而take方法是一直阻塞,直到取到任务为止。根据当前线程数是否大于核心线程数,来决定用take还是Poll方法
Post wxa image%2ff686a22987844feab02f2e244cff0eba 用微信扫描
小程序码阅读原文

开发者头条

程序员分享平台