0

複数の Runnable オブジェクトをキューに入れ、1 つのスレッドで実行を待機することは可能ですか? ExecutorService を使用せずにどのように行うことができますか? これらの Runnable オブジェクトの 1 つがチェックされていない例外をスローした場合、スレッドの実行を停止しますか?

4

3 に答える 3

1

これは、複数のRunnableオブジェクトをキューに入れて、1つのスレッドでの実行を待機することは可能ですか?

ExecutorServiceを使用します。

ExecutorServiceを使用せずにそれを行うにはどうすればよいですか?

BlockingQUeueとThreadを使用します。

それらのRunnableオブジェクトの1つがチェックされていない例外をスローした場合、スレッドの実行を停止しますか?

あなたはこれを自分で書かなければならないので、それはあなた次第です。

ExecutorServiceの場合、スローされたThrowableがFutureオブジェクトに追加され、確認できるようになります。これを行うのを忘れるのは非常に簡単です。その場合、Runnableにtry/catchブロックを追加する必要があります。

于 2012-08-30T07:48:30.440 に答える
1

ExecutorServiceを使用しない特別な理由はありますか?これは、1つのスレッドで機能する実装を提供します。Executors.newSingleThreadExecutor()

于 2012-08-30T07:48:52.513 に答える
0

可能です。キューをリッスンするスレッドを開きます。アイテムを検出するたびに、デキューして実行します。タスクの実行をtrycatchブロックでラップできるため、タスクの1つが例外をスローした場合でも、ワーカースレッドは作業を続行できます。

そうは言っても、上記はまさにThreadPoolExecuterが行うことですが、なぜそれを使用したくないのでしょうか。(宿題?)

于 2012-08-30T07:48:52.677 に答える