假设我有一个调度程序

@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。

当两个或多个求职电话同时计数时,将导致饥饿。

谁能告诉我是否有办法避免这种情况?

最佳答案

这里没有僵局!

将ReetrantLock与公平政策一起使用。如果您不知道ReentrantLock,请用google搜索。

private final ReentrantLock lock = new ReentrantLock(true);

09-27 14:28