线程池

有个任务是把卫星送到太空,现在大部分火箭把卫星送到太空后也就废弃了,这样带来一个问题:每发送一批卫星就要造一枚火箭,成本太高。如何降低成本,SparceX(没错就是那个马斯克的公司)造了一个可回收的火箭,用于多次发送卫星。这就是我们今天要讲的线程池。

“请设计一个线程池” 这是常见的一道面试题。很多人瞬间被问蒙了,别说设计线程池,平时用的都比较少。但是小编要说的是多线程/线程池是非常重要的,不仅是面试中区别屌丝和大神的利剑,更是工作实践中提升系统性能的重要手段。

线程池

线程:用于执行一个任务,是操作系统调用的最小单元,通常是一次性消费品,即:任务运行结束后销毁

线程池:存放预先创建好的多个线程,每个线程可以依次执行多个任务

解决问题

(1)线程复用:创建/销毁线程是很消耗资源和时间的,通过线程复用,减少资源消耗,提升响应速度

(2)系统安全:无限制的创建线程,将会把系统的资源消耗殆尽,需要控制线程的数量

(3)性能调优:通过设置合理的线程数匹配硬件资源的能力,使系统性能达到最优(即线程数不能太大也不能太小)

重要接口

通过与线程池相关的几个概念:线程、任务,我们大脑可以想象一个线程池包含哪些参数:

(1)线程池事先启动多少个线程:corePoolSize

(2)线程池

    public ThreadPoolExecutor(
                              int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler
                               ) 
个人资料
时海
等级:8
文章:272篇
访问:16.0w
排名: 2
上一篇: 1099-找链表中间节点,只遍历一次
下一篇:TensorFlow 实现多元线性回归
标签: 线程、卫星、火箭、太空、corepoolsize、面试题
隐藏