普通线程
线程池特点
newSingleThreadExecutor() 一个线程的线程池为什么这里我要拿一个线程的线程池来说明呢?其实我们把简单的搞定复杂的也是演变过来的。先上码:
核心线程:线程池新建线程的时候,如果当前线程总数小于corePoolSize,则新建的是核心线程,如果超过corePoolSize,则新建的线程不是核心线程。核心线程默认情况下会一直存活在线程池中,即使这个核心线程啥也不干(闲置状态)。如果指定ThreadPoolExecutor的allowCoreThreadTimeOut这个属性为true,那么核心线程如果不干活(闲置状态)的话,超过一定时间(时长下面参数决定),就会被销毁掉。
线程总数 = 核心线程数 + 非核心线程数。
一个非核心线程,如果不干活(闲置状态)的时长超过这个参数所设定的时长,就会被销毁掉,如果设置allowCoreThreadTimeOut = true,则会作用于核心线程。
TimeUnit是一个枚举类型,其包括:NANOSECONDS : 1微毫秒 = 1微秒 / 1000MICROSECONDS : 1微秒 = 1毫秒 / 1000MILLISECONDS : 1毫秒 = 1秒 /1000SECONDS : 秒MINUTES : 分HOURS : 小时DAYS : 天
当所有的核心线程都在干活时,新添加的任务会被添加到这个队列中等待处理,如果队列满了,则新建非核心线程执行任务。
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |