最近才开始学Java concurrent包,一学问题一堆,唉......
还是先贴代码吧,一个测试fixedthreadpool的代码
执行结果上看,确实只有3个线程:
pool-1-thread-1正在执行!
这是第0在执行!
pool-1-thread-2正在执行!
这是第1在执行!
pool-1-thread-2正在执行!
这是第3在执行!
pool-1-thread-3正在执行!
这是第2在执行!
pool-1-thread-1正在执行!
这是第4在执行!
pool-1-thread-2正在执行!
这是第5在执行!
pool-1-thread-2正在执行!
这是第8在执行!
pool-1-thread-2正在执行!
这是第9在执行!
pool-1-thread-1正在执行!
这是第6在执行!
pool-1-thread-3正在执行!
这是第7在执行!
但打印显示,最少构造了10个ThThread对象,根据以前的经验创建线程至少Thread th = new Thread(Runnalbe...);为什么线程池会有这种神奇的效果?
搞不明白啊
还是先贴代码吧,一个测试fixedthreadpool的代码
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
*@author zzf
*/
public class Test_14 {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
executorService.execute(new ThThread(i));
}
executorService.shutdown();
}
}
class ThThread implements Runnable {
private int i = 0;
public ThThread(int i) {
this.i = i;
}
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行!");
System.out.println("这是第" + i + "在执行!");
}
}
执行结果上看,确实只有3个线程:
pool-1-thread-1正在执行!
这是第0在执行!
pool-1-thread-2正在执行!
这是第1在执行!
pool-1-thread-2正在执行!
这是第3在执行!
pool-1-thread-3正在执行!
这是第2在执行!
pool-1-thread-1正在执行!
这是第4在执行!
pool-1-thread-2正在执行!
这是第5在执行!
pool-1-thread-2正在执行!
这是第8在执行!
pool-1-thread-2正在执行!
这是第9在执行!
pool-1-thread-1正在执行!
这是第6在执行!
pool-1-thread-3正在执行!
这是第7在执行!
但打印显示,最少构造了10个ThThread对象,根据以前的经验创建线程至少Thread th = new Thread(Runnalbe...);为什么线程池会有这种神奇的效果?
搞不明白啊