0

を使用Executors.newSingleThreadExecutor()して を取得する場合ExecutorService、Runnable のそれぞれの実行のタイムアウトを設定できますか? そうでない場合、デフォルト値はありますか? または、ランナブルの 1 つが実行に時間がかかる場合、スレッドはブロックされますか?

Androidのドキュメントを読みましたが、完全にはわかりません( Executors.newSingleThreadExecutor() Androidリファレンスから):

無制限のキューで動作する単一のワーカー スレッドを使用する Executor を作成します。(ただし、シャットダウン前の実行中に障害が発生してこの単一のスレッドが終了した場合、後続のタスクを実行するために必要に応じて新しいスレッドが代わりに使用されることに注意してください。) タスクは順次実行されることが保証されており、複数のタスクがアクティブになることはありません。いつでも。それ以外は同等の newFixedThreadPool(1) とは異なり、返されたエグゼキュータは、追加のスレッドを使用するように再構成できないことが保証されています。

4

1 に答える 1

0

ランナブルとはどのようなものですか?AFIK、それがFutureでない場合、タイムアウトを設定することはできません。また、 ThreadPoolExecutorで設定可能なタイムアウト(コア プール サイズに戻るためにプールがアイドル状態のスレッドを強制終了する時間) と、個々のタスクの実行時間のタイムアウトを混同している可能性もあります。

于 2013-10-25T23:17:12.940 に答える