質問- 500 ミリ秒ごとに実行するようScheduledExecutorService.shceduleAtFixedRate
にスケジュールしますが、これは 1000 ミリ秒でブロックされます。taskA
これで、後続の実行は余分な 500 ミリ秒待つのではなく、前の実行の直後に開始されます。
taskA
固有のロックを取得しますが、これは別のスレッドによっても (試行されて) 取得されます。固有のロックには、このスレッドが飢餓のリスクを実行していることを保証する公平性がないため、ここに私の質問があります:このリスクを回避するための良い/クリーンな方法はありますか? たとえば、タスクを 1500 ミリ秒ごとに実行するようにスケジュールします (あまり防水性がありません)。それとも、ロックの取得が一種の「償却された公平性」を示すと予想しますか?