- 通过设置corePoolSize和maximumPoolSize相同,就可以创建固定大小的线程池
- 线程池希望保持较少的线程数,并且只有在变得很大时才增加它
- 通过设置maximunPoolSize为很高的值,例如Integer.MAX_VALUE,可以允许线程池容纳任意数量的并发任务
- 只有在队列填满时才创建多于corePoolSize的线程,所以如果你使用的是无界队列(例如LinkedBlokingQueue),那么线程数就不会超过corePoolSize
KeepAliveTime
如果线程池当前的线程数多于corePoolSize,那么多余的线程空闲时间超过KeepAliveTime,它们就会被终止
ThreadFactory用来创建线程
新的线程是由ThreadFactory创建的,默认使用Executors.defaultThreadFactory(),创建出来的线程都在一个线程组,拥有同样的NORM_PRIORITY优先级并且都不是守护线程。如果自己指定ThreadFactory,那么就可以改变线程名,线程组,优先级,是否是守护线程等。
工作队列
有3种常见的队列类型:
1.直接交接:SynchronousQueue
2.无界队列:LinkedBlockingQueue
3.有界队列:ArrayBlockingQueue