当前位置: 首页 > 知识库问答 >
问题:

ScheduleDexecutorService.如何在2个seperate services中在某个时间间隔后运行两个任务

许远航
2023-03-14

这是两个服务类中通用的代码。

Runnable postNotificationRunnable = new Runnable() {
            @Override
            public void run() {
            // statements here}
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
    scheduledExecutorService.scheduleAtFixedRate(postNotificationRunnable, 0, 1000, TimeUnit.SECONDS);

现在的问题是,当我运行app时,两个服务都启动了,但只有服务的scheduledExecutorService运行,另一个不运行。我做错了什么?另外,我是第一次使用ScheduledExecutorService。

共有1个答案

白镜
2023-03-14

ScheduledExecutorService将等待任务完成,如果一个任务需要的时间比您指定的速度长(在您的情况下是1000秒)。看一下相应的Javadoc:

[...]如果此任务的任何执行时间超过其周期,则随后的执行可能会延迟开始,但不会同时执行。

由于您的服务看起来像守护进程(因此一直运行到应用程序关闭),您可以这样做:

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
ExecutorService pool = Executors.newCachedThreadPool();

scheduler.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        pool.execute(postNotificationRunnable);
    }
}, 0L, 1000L, TimeUnit.SECONDS);
 类似资料:
  • 问题内容: 我想每天早上5点执行某项任务。因此,我决定使用它,但到目前为止,我已经看到了一些示例,这些示例显示了如何每隔几分钟运行一次任务。 而且我找不到任何示例来说明如何每天在特定时间(上午5点)每天运行任务,并且还考虑了夏时制的事实- 以下是我的代码,每15分钟运行一次- 有什么办法,我可以考虑兼顾夏时制的事实,安排一个任务在每天的凌晨5点运行? 而且对于这个还是更好? 问题答案: 与当前的J

  • 问题内容: 我有一个bash脚本(在CentOS 6.4下运行),可以启动90个 不同的 PHP脚本。 为了避免服务器超载,我使用&符号,它可以工作,但是 我的目标是始终同时运行5个脚本 有没有办法做到这一点? 问题答案: 这个问题弹出了几次,但我找不到合适的答案。我想现在我找到了一个很好的解决方案! 不幸的是,这不是标准发行版的一部分,但make是。它有一个开关可做并联。 man make(1)

  • 问题内容: 在java中如何计算两个日期的间隔? 问题答案: 简单差异(无lib) 然后你可以致电: 以分钟为单位获取两个日期的差异。 ,一个标准的Java枚举,范围从nanos到数天。 可读的差异(无lib) http://ideone.com/5dXeu6 输出类似于,带有单位排序。 你只需要将该映射转换为用户友好的字符串即可。 警告 上面的代码片段计算了两个瞬间之间的简单差异。它可以在夏令开

  • 问题内容: 我有两次,开始时间和停止时间,格式为10:33:26(HH:MM:SS)。我需要两次之间的区别。我一直在浏览Python文档并在线搜索,我想这可能与datetime和/或time模块有关。我无法使其正常工作,并且仅在涉及约会时才继续寻找方法。 最终,我需要计算多个持续时间的平均值。我得到了工作上的时差,并将它们存储在列表中。我现在需要计算平均值。我正在使用正则表达式解析原始时间,然后进

  • 问题内容: 我想添加两个日期间隔,以小时和分钟为单位计算总持续时间,实际上我要执行加法运算,如下所示: 任何想法如何执行这种类型的间隔加法来获取PHP中总小时和分钟格式的两个间隔之和 问题答案: PHP没有运算符重载*,因此有了对象,PHP会尝试先将其转换为字符串,但不支持: 相反,您需要创建一个新对象,然后使用该函数添加间隔,最后将差异显示到参考点: 完整示例/(演示): 您可能还需要考虑查看如

  • 问题内容: 我尝试通过C#的JSON解析创建标记。我在javascript中有一个关于日期时间比较的小问题。 否则不起作用!谷歌地图上有truckOnline标记。我的错误在哪里? 和在SQL中这样的LastRecordTime格式:04.12.2013 01:03:00 问题答案: 穆罕默德 看来您打错了字: 应该是(请注意逗号): 另外,您试图从日期对象创建新的日期对象,这是不正确的: 这里是

  • 假设我有一个这样的范围列表 现在我想找到一个范围,比如。我的算法应该给我这个范围的所有范围。例如,这个的输出应该是 <代码>输出-[1,3]、[2,5]、[4,6]、[8,10] 我该如何着手解决这个问题? PS:我知道段树可能会有所帮助。我可以在其中构建树来存储间隔并查询位于间隔内的Point,但如何在给定间隔的情况下获取所有间隔。

  • 问题内容: 我有 以下格式的两个对象。 现在,我想将上述两个日期与时间进行比较。我应该如何在Java中进行比较。 谢谢 问题答案: 自实现以来,它很容易: 按照合同规定,如果分别被认为小于/等于/大于/大于(例如,在此之前/之前/之后),它将返回一个负整数/零/正整数。 请注意,还有和方法将改为返回布尔值。