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