程序启动的过程中,如果产生新的线程,涉及到的成本是比较高的。因为要涉及到与操作系统的交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。
线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池成为空闲状态,等待下一个对象的使用。
在JDK5之前,我们必须手动实现自己的线程池,从JDK5之后,Java内置支持线程池。
Executors工厂类产生线程池。
如何实现线程的代码:
A :创建几个线程的对象,控制要创建几个线程。
public static ExecutorsService newFixedThreadPool(int nThreads);
B :这种线程池的线程可以执行 Runnable对象,或者 Callable(这种创建线程的方法要依赖于线程池)对象
C:调用如下方法即可
Future <?> submit(Runnable task);
<T>Future<T> submit (Callable<T> task);
D 如何结束线程池
shutdown();
例子:
//创建2个线程的线程池
ExecutorsService pool=Executors.newFixedThreadPool(2);
//使用线程池
pool.submit(new myRunnable());
pool.submit(new myRunnable());
//结束线程池
pool/shutdown();