は、私は別のケースでは、スケジューラ春スケジューラ同期メソッドの飢餓
@Component
public class Scheduler{
private static int counter = 0;
private synchronized void countIt(){
counter++;
}
@Scheduled(fixedDelay = 3000)
public void job1(){
countIt();
}
@Scheduled(fixedDelay = 6000)
public void job2(){
countIt();
}
}
異なるタスクのトリガーがcountItを呼び出します持っていると仮定します。
複数のジョブコールカウントが同時に発生した場合、それはスタベーションを引き起こします。
この状況を回避する手段があるかどうか教えてください。
デッドロックのケースのようには見えません – AdamSkywalker
@AdamSkywalker実際のケースは少し複雑です。私は多くのスレッドがこの同期メソッドを呼び出している。彼らが同じ時間にメソッドを呼び出すと、デッドロックが発生しました。 – Roy
デッドロックは、スレッド1がリソースAを保持し、リソースBを必要とし、スレッド2がリソースBを保持しリソースAを必要とする状況です。同期メソッドはミューテックスで、デッドロックを引き起こすことはありません – AdamSkywalker