简述java语言的线程池以及为什么要使用线程池?请任意列举两个常用的线程池
为了要提高服务器性能,假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池。
线程池是关注如何缩短或调整T1,T3时间的技术,从而提高服务器程序性能的。它把T1,T3分别安排在服务器程序的启动和结束的时间段或者一些空闲的时间段,这样在服务器程序处理客户请求时,不会有T1,T3的开销了。
常用线程池:
Executors.newCachedThreadPool:必要时创建新线程,空闲线程停留60秒
Executors.newFixedThreadPool:固定容量的线程池
Executors.newSingleThreadPool:只有一个线程的线程池
Executors.newScheduledThreadPool:用于预定指定的线程池