线程池中的线程用完之后不会死亡,可以回收,等待下一个对象的使用,提高了性能。
JDk5后有了Executors工厂类来产生线程池:
public class RunnableDemo4 implements Runnable {
private int num = 5;
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
if(num>0) {
System.out.println(Thread.currentThread().getName()+"--------"+num--);
}
}
}
}
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
public class RunnableDemo4Test {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(2);
pool.submit(new RunnableDemo4());
pool.submit(new RunnableDemo4());
}
}
pool-1-thread-1--------5
pool-1-thread-1--------4
pool-1-thread-1--------3
pool-1-thread-2--------5
pool-1-thread-1--------2
pool-1-thread-1--------1
pool-1-thread-2--------4
pool-1-thread-2--------3
pool-1-thread-2--------2
pool-1-thread-2--------1
多线程的三种实现方式中的第三种Callable和Future实现时,就借助了线程池。