ExecutorService newFixedThreadPoolの動作を学習しようとしています。私はexecutorServiceに仕事を割り当て、それが複数のスレッドによって実行されることを期待しています。サイズが5のExecutorService newFixedThreadPoolから実行中のスレッドが1つだけです
シナリオは単純です。
サイズ5のスレッドプールを初期化します。次に、エクゼクティブサービスに作業を割り当てます。 しかし、私は1つのスレッドが作業を処理しているのを見ます。
プール内で使用できる複数のスレッドで処理しないでください。 コード:作業に参加
以上のスレッド:ここ
ExecutorService executorService = Executors.newFixedThreadPool(5);
executorService.execute(new Runnable() {
public void run() {
int k =0;
while (k++<5){
System.out.println("Active Thread "+Thread.currentThread().getName());
}
}
});
は完全なコードは、私が得た出力は、私が期待していた
Active Thread pool-1-thread-1
Active Thread pool-1-thread-1
Active Thread pool-1-thread-1
Active Thread pool-1-thread-1
Active Thread pool-1-thread-1
出力されたある jdoodle.com/a/bRP
です。
EDIT
基本的に私は私の理解が間違っている場合、あなたが私に教えてくださいすることができExecutorServiceの
package Threading;
public class ThreadDeleteme {
public static void main(String[] args) {
Work w = new Work();
Thread t1 = new Thread(w);
t1.setName("Thread 1 ");
Thread t2 = new Thread(w);
t2.setName("Thread 2 ");
Thread t3 = new Thread(w);
t3.setName("Thread 3 ");
t1.start();
t2.start();
t3.start();
System.out.println("ThreadDeleteme.main()");
}
}
class Work implements Runnable {
Integer i = 0;
@Override
public void run() {
while (i < 100) {
System.out.println(Thread.currentThread().getName() + " " + i);
i++;
}
}
}
を使用してこの動作を複製します。
おかげ
あなたはプールに5つのタスクを与えなかったので、5回ループするタスクを1つ与えました。 –
javadocs(Executorインターフェイス用)を読むと、このコードスニペット 'Executor executor = anExecutor;が表示されます。 executor.execute(新しいRunnableTask1()); executor.execute(new RunnableTask2()); ' –
変更した質問を確認してください。スレッドプールから複数のスレッドで1つの作業を実行したい。 EDITセクションでやっているように – Geek