在互联网公司工作两年多,有了很多实践经验,把这篇欠下的文章补一补。
线程池是什么?
相信这个大家都很清楚,就和其他各种池子一样,线程池由很多线程组成,我们提交任务到线程池里,线程池会负责调度线程,执行我们提交的任务。
为什么要用线程池?
手动创建线程,start一把就行了,为啥还需要线程池呢?如果工程启动,你只需要启动一个线程,这确实是可行的。但是,
- 如果执行一次任务,就要启动一个线程,执行完毕后停止线程,就涉及到线程的创建和销毁,开销还是很大的;
- 如果需要多个线程执行,还要动态调整数量
这两种场景就可以使用线程池了,线程池的好处就是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。
线程池有哪些?