有个任务是把卫星送到太空,现在大部分火箭把卫星送到太空后也就废弃了,这样带来一个问题:每发送一批卫星就要造一枚火箭,成本太高。如何降低成本,SparceX(没错就是那个马斯克的公司)造了一个可回收的火箭,用于多次发送卫星。这就是我们今天要讲的线程池。
“请设计一个线程池” 这是常见的一道面试题。很多人瞬间被问蒙了,别说设计线程池,平时用的都比较少。但是小编要说的是多线程/线程池是非常重要的,不仅是面试中区别屌丝和大神的利剑,更是工作实践中提升系统性能的重要手段。
线程:用于执行一个任务,是操作系统调用的最小单元,通常是一次性消费品,即:任务运行结束后销毁
线程池:存放预先创建好的多个线程,每个线程可以依次执行多个任务
(1)线程复用:创建/销毁线程是很消耗资源和时间的,通过线程复用,减少资源消耗,提升响应速度
(2)系统安全:无限制的创建线程,将会把系统的资源消耗殆尽,需要控制线程的数量
(3)性能调优:通过设置合理的线程数匹配硬件资源的能力,使系统性能达到最优(即线程数不能太大也不能太小)
通过与线程池相关的几个概念:线程、任务,我们大脑可以想象一个线程池包含哪些参数:
(1)线程池事先启动多少个线程:corePoolSize
(2)线程池
public ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler )