1. 为何须要建立线程池?缓存
答:建立和销毁对象是很费时间的,由于建立一个对象要获取内存资源或者其它更多资源,因此提升服务程序效率的一个手段就是尽量减小建立和销毁对象的次数,特别是一些很耗资源的对象建立和销毁。服务器
2. 如何建立线程池?工具
答:工具类Executors面提供了一些静态工厂方法,经常使用的有:性能
- newSingleThreadExecutor 只有一个单线程,若异常结束,会有一个新的线程替代它,此线程池保证全部任务的执行顺序按照任务的提交顺序执行。
- newFixedThreadPool:建立固定大小的线程池。若异常结束一个,会建立新的线程达到固定数量。线程池的大小一旦达到最大值就会保持不变。
- newCachedThreadPool:建立一个可缓存的线程池。任务须要多少线程就建立多少个线程,多余的线程会被回收。大小取决于操做系统(或者说JVM)可以建立的最大线程大小。
- newScheduledThreadPool:建立一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。
总结:若是但愿在服务器上使用线程池,强烈建议使用newFixedThreadPool方法来建立线程池,这样能得到更好的性能。spa