首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阻塞时间超过其运行间隔的ScheduledExecutorService任务

阻塞时间超过其运行间隔的ScheduledExecutorService任务
EN

Stack Overflow用户
提问于 2019-02-12 15:54:26
回答 1查看 144关注 0票数 1

关于ScheduledExecutorService.shceduleAtFixedRate的问题-我安排taskA运行每500个millis,这为1000 millis块。现在,接下来的处决将不再等待额外的500米利斯,而是在前一次执行之后立即开始。

taskA获得一个内部锁,这个锁也是由另一个线程(尝试)获得的。由于内部锁没有公平性保证,这个线程面临饥饿的风险,所以我的问题是:有一个好的/干净的方法来避免这种风险吗?把任务安排为每1500米跑一次(听起来不太防水)?还是我们期望锁的收购表现出一种“摊销公平”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-12 15:56:33

是的,你可以使用scheduleWithFixedDelay

创建并执行一个周期性操作,该操作首先在给定的初始延迟之后启用,然后在一次执行的结束到下一次的开始之间使用给定的延迟。如果任务的任何执行遇到异常,则随后的执行将被抑制。否则,任务将仅通过取消或终止执行器来终止。

所以你给的延迟是下一次开始的最后一次结束之间的时间--即运行之间没有重叠。

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

https://stackoverflow.com/questions/54653975

复制
相关文章

相似问题

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