私は2つの整数xとyを持っています。 xはスレッドプール内のスレッド数です。 yはスレッドを実行したい回数です。私はsleep()を使いたくありません。私はこれを実行すると、私はこれを取得スレッドプールを順番に実行
public class TestThreadPool {
public static void main(String[] args) {
int x = 7;
int y = 1000;
ExecutorService executor = Executors.newFixedThreadPool(x);//creating a pool of 7 threads
for (int i = 0; i < y; i++) {
Runnable worker = new WorkerThread("" + (y-i));
executor.execute(worker);
}
executor.shutdown();
while (!executor.isTerminated()) { }
System.out.println("Finished all threads");
}
}
class WorkerThread implements Runnable {
private String message;
public WorkerThread(String s){
this.message=s;
}
public void run() {
System.out.println(Thread.currentThread().getName()+" count = " + message);
}
}
- >
pool-1-thread-1 count = 1000
pool-1-thread-3 count = 998
pool-1-thread-2 count = 999
pool-1-thread-4 count = 997
.
.
.
.
pool-1-thread-2 count = 2
pool-1-thread-15 count = 1
pool-1-thread-14 count = 7
pool-1-thread-4 count = 8
pool-1-thread-3 count = 9
Finished all threads
私の問題は、次のとおりです。私は、出力、スレッドをしたいと順番にカウントされます。このよう - >
pool-1-thread-1 count = 1000
pool-1-thread-2 count = 999
pool-1-thread-3 count = 998
pool-1-thread-4 count = 997
pool-1-thread-5 count = 996
pool-1-thread-6 count = 995
pool-1-thread-7 count = 994
pool-1-thread-1 count = 993
pool-1-thread-2 count = 992
.
.
pool-1-thread-5 count = 2
pool-1-thread-6 count = 1
Finished all threads
すべてを同期的に実行するには、スレッドプールの目的が明確ではありません。あなたの道を並行して走らせることはできません。 –
これは並行処理の仕組みではありません – MadProgrammer
逐次実行が必要なときにスレッドを使用する理由を私が決して理解できないことはありません。 – EJP