2011-06-20 13 views
6

次のコードはうまくいきますが、概念的に正しいのでしょうか?スレッドを開始し、joinを待ちます。代わりにThreadPoolを使用する必要がありますか?Javaスレッドの開始と管理方法は?

可能であれば、概念的にはそれが正常に見える

List<Thread> threads = new ArrayList<Thread>(); 

for (Test test : testsToBeExecuted) { 
    Thread t = new Thread(test); 
    threads.add(t); 
    t.start(); 
} 

for (Thread thread : threads) { 
    thread.join(); 
} 

答えて

9

をコメントしてください。 Thenyouはエグゼキュータのサービス自体に呼び出し可能オブジェクトおよびinvokeAllのリストを作成します

ExecutorService service = Executors.newFixedThreadPool(testsToBeExecuted.size()); 

:あなたはあなたのようなものを作成ExecutorServiceのを使用することができます。それは本質的に同じことをするでしょう。

0

ExecutorServiceが行く方法であることに同意します。 ExecutorServiceを使用して任意の数のタスクを実行し、結果を収集してリストとして返すユーティリティクラスがあります。 ExecutorServiceはすべてのハウスキーピングを行います。

関連する問題