0

X常にアクションを実行し、数秒間スリープしてアクションを実行するバックグラウンド スレッドが必要です。
基本的に、runメソッドは次のようなものです。

while(!isInterrupted()){  
   //do something  
   Thread.sleep(10);  
}  

私の質問は:

  1. この場合、エグゼキューターを使用するのは理にかなっていますか? 私はスレッドを生成していないので、この場合でもエグゼキューター (シングルスレッド) を使用する方が良いですか?
  2. さらに、スレッドがdo something正確に 10 秒でパーツに入るという保証が必要な場合、それはカスタム スレッドを使用するだけで可能ですか、またはエグゼキューターを介してより保証されますか? アクションを実行するのに 10 秒という厳しい制限がある場合、それを達成するにはどうすればよいでしょうか? コードが戻る時間は、do somethingスケジュールなどによって変動する可能性があると思います。どうすればそのような保証を得ることができますか?
4

1 に答える 1

3

あなたのような永久に実行されるタスクである単一のスレッドのみを使用している場合は、現在のロジックを使用できます。

ただし、実行する必要があるいくつかの小さなタスクがある場合にのみ、SingleThreadPool を使用する意味があります。

どうすればそのような保証を得ることができますか?

OS 側 (Linux または Windows) からは、スレッドが正確に 10 秒でスリープから復帰するという保証はありません。スレッドの優先順位を上げてみてください。ただし、これも動作する保証はありません。

あなたのロジックは、IMO のようなハード タイミングに依存するべきではありません。

于 2013-02-19T06:28:47.017 に答える