首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >春调度同步法饥饿

春调度同步法饥饿
EN

Stack Overflow用户
提问于 2016-10-14 12:09:39
回答 2查看 2.7K关注 0票数 1

假设我有一个调度程序

代码语言:javascript
复制
@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。

当两个或多个作业同时调用countIt时,将导致饥饿。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-14 13:50:29

这里没有僵局!

使用ReetrantLock和公平政策。,如果你不知道ReentrantLock,请搜索它。

代码语言:javascript
复制
private final ReentrantLock lock = new ReentrantLock(true);
票数 0
EN

Stack Overflow用户

发布于 2016-10-14 12:27:21

这不应陷入僵局。

死锁是由一个线程锁定资源A,然后试图锁定资源B,而另一个线程锁定资源B,然后尝试锁定资源A造成的。有更复杂的方式可以发生死锁,但是死锁不能只发生在一个锁上。

在您的情况下,只有一个锁,所以没有死锁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40042840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档