Javaスレッドプールの問題

1574 ワード

最近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個のThreadオブジェクトが構築され、以前の経験に基づいてスレッドが少なくともThread th=new Thread(Runnalbe...)を作成した.なぜスレッドプールにこのような不思議な効果があるのですか?
   わからないよ