多线程使用——线程池
一、认识线程池
一个可以复用线程的技术
(一)不适用线程池的问题
用户每发起一个请求,后台就要创建一个新线程来处理,下次新任务来了肯定又要创建新线程处理的,而创建新线程的开销是很大的,并且请求过多时,肯定会产生大量的线程出来,这样会严重影响系统的性能。
(二)使用线程池的原理
优先处理,排队等待,能控制线程的数量,也能控制任务的数量。分为:
工作线程WorkThread和任务队列WorkQueue
二、创建线程池
JDK5.0起提供了代表线程池的接口:ExecutorService
(一)创建方式
三、线程池处理Runnable任务
四、线程池处理Callable任务
五、Executors工具类实现线程池
计算密集型的任务:核心线程数量=CPU的核数+1
IO密集型的任务:核心线程数量=CPU核数*2