1

これはおそらく単純なものですが、さまざまなことを試しましたが、何を試してもうまくいきません。

基本的に、タスク リストを処理するときに更新したい JProgressBar があります。タスクは非常に短いですが、ExecutorService を使用した理由はたくさんあります。

問題は、処理するタスクがいくつ残っているかを ExecutorService でリッスンする良い方法が見つからないことです。すべてのタスクが完了するまで、invokeAll() はブロックします。submit() を使用して各タスクを実行すると、JProgressBar のコードにヒットするまでに、タスクはほぼ完了します。2つを交互に配置しようとさえしましたが、それは厄介でした.

タスクのバッチを送信し (callable を実装)、処理を開始する execute() メソッドを呼び出す簡単な方法はありますか?

それとも、ここで完全に間違った方向を見ていますか?

ありがとう!

4

1 に答える 1

1

次を使用できますExecutorCompletionService: http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ExecutorCompletionService.html

ドキュメントページの例はかなり良いです;)

基本的には、タスクをサービスに送信してから、ポーリングまたは取得するだけです。タスクが戻ったら、JProgressbar.

于 2011-10-22T16:55:21.447 に答える