Java 线程池问题

    最近才开始学Java concurrent包,一学问题一堆,唉......
    还是先贴代码吧,一个测试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...);为什么线程池会有这种神奇的效果?
   搞不明白啊

你可能感兴趣的:(java,thread)