私の質問:で一連のスレッド化されたオブジェクトを実行し、ThreadPoolExecutor
それらがすべて終了するのを待ってから次に進むにはどうすればよいですか?
ThreadPoolExecutor は初めてです。したがって、このコードは、それがどのように機能するかを学習するためのテストです。別のBlockingQueue
を呼び出さずにキューを開始する方法を理解していないため、現在、 をオブジェクトで満たすことさえできません。とにかく、今電話しただけですが、まだ何かが足りないと思います。どんなヒントも素晴らしいでしょう!ありがとう。execute()
RunnableObject
awaitTermination()
public void testThreadPoolExecutor() throws InterruptedException {
int limit = 20;
BlockingQueue q = new ArrayBlockingQueue(limit);
ThreadPoolExecutor ex = new ThreadPoolExecutor(limit, limit, 20, TimeUnit.SECONDS, q);
for (int i = 0; i < limit; i++) {
ex.execute(new RunnableObject(i + 1));
}
ex.awaitTermination(2, TimeUnit.SECONDS);
System.out.println("finished");
}
RunnableObject クラス:
package playground;
public class RunnableObject implements Runnable {
private final int id;
public RunnableObject(int id) {
this.id = id;
}
@Override
public void run() {
System.out.println("ID: " + id + " started");
try {
Thread.sleep(2354);
} catch (InterruptedException ignore) {
}
System.out.println("ID: " + id + " ended");
}
}