问题标签 [scheduledexecutorservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1351 浏览

java - 我可以在不保留引用的情况下检索在 ScheduledExecutorService 中运行的任务吗?

我目前正在修改一个应用程序以使用 aScheduledExecutorService代替 aTimer并且我曾经使用我保留的 a 访问计划任务Map,它允许我访问cancel()该任务以及访问它。

使用这个 API,我似乎必须维护两个Maps,一个用于访问任务,一个用于SheduledFuture<?>返回的 sschedule()以便能够取消它们。

我读了这篇文章,但与我使用 a 所做的相比,它看起来非常繁重Timer(只Map需要一个)。

这是一个简单的应用程序,它有两个需要访问和取消的任务。

有什么我没有得到的,或者“执行者”不是我需要的东西吗?

0 投票
1 回答
135 浏览

java - 为什么我的消息在 ScheduledExecutorService shutdownNow 时丢失

在我的 Web 应用程序中,我向 ScheduledExecutorService 提交了一个可运行的实例。在可运行实例中,我通过使用receiveNoWait 方法从IBM MQ接收消息,并且会话处于CLIENT_ACKNOWLEDGE模式。当我调用 ScheduledExecutorService 的 shutdownNow 方法时,接收方法有时会丢失一条消息而没有调用确认方法。对我有什么建议吗? 这是接收消息的代码。

尝试{
当ScheduledExecutorService关闭时,我只能看到第一个loginfo,没有任何异常。

logger.info("获取消息");

消息 msg = consumer.receiveNoWait();

logger.info("获取消息成功");

返回味精;

} 捕捉(可投掷的 e){

logger.error("处理数据的时间出现异常", e);

返回空值;

}

0 投票
2 回答
1443 浏览

mysql - Java调度线程杀死数据库

工具:Spring 3.0、Hibernate 2.0、Java 6

大多数类似的线程都建议安装缺少的库,更正配置文件等,但我的项目运行良好。一个模块正在制造问题

我想做的事:在应用程序启动时创建一个线程。在 Web 应用程序中记录用户请求,将它们放入队列中。线程每 60 秒读取一次队列,并调用事务方法来持久化队列。

数据结构: ConcurrentLinkedQueue - 仅在创建 bean 时初始化一次

的定义init()

线程:在另一个类中,一个线程被安排在 60 秒的固定时间间隔后执行

持久性:定义save()

申请日志:

应用程序在本地计算机上运行没有任何问题,但在服务器(亚马逊 AWS bitnami tomcatstack)上运行几个小时后。无法访问数据库(MySQL)。显然,MySQL 死了。可能是因为孤儿连接太多或其他原因,但我还没有弄清楚。

mysql -u root -p生成此错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/bitnami/mysql/tmp/mysql.sock' (2)

堆栈跟踪:

我希望这是有道理的。

0 投票
1 回答
3618 浏览

java - Java scheduleAtFixedRate 2 次后停止工作

我有这个代码:

exec 在我的班级中声明为: private ScheduledExecutorService exec;

我收到“获取消息....”消息 2 次,然后它就停止了。我无法解释为什么。图形用户界面仍在工作。那么这里发生了什么?

0 投票
1 回答
679 浏览

java - 在 Scheduler(Timer) 的 run 方法中创建 Scheduler(Timer)

参考Java Timer ClassScheduledExecutorService 接口,我可以在执行线程(其他调度程序)的运行方法(或 TimerTask)内部设置调度程序(或计时器)吗?

案例研究:我有一个数据库,其中包含歌曲列表(10,000)和播放歌曲的时间安排。

所以我想创建一个调度程序(比如 1)(周期 1 小时),它将搜索数据库并为计划在一小时内播放的所有歌曲创建调度程序。

一小时后,scheduler1 将删除所有线程并再次搜索数据库并为其他线程创建调度程序。

这是个好主意吗?可以创建吗?

或者我应该一次创建 10000 个调度程序?

在这种情况下,哪一个将是更好的计时器或调度程序?

0 投票
1 回答
93 浏览

java - 如何在应用服务器中处理不同数量的定时作业

我正在使用带有 hibernate、spring 和 jpa 的 glassfish 来获取进入我们系统并向客户显示数据的数据。

但是,我还需要每分钟运行多个作业以根据传入数据计算数据。

但我永远不知道工作的数量,因为它们来自数据库,所以它们可以随时更改。我们有 x 个客户,每个客户可以有 1 到多个工作。

所以我真正需要做的是:

  1. 从表中读取以获取要运行的作业数
  2. 每分钟运行这些作业
  3. 如果从表中删除作业,则停止处理该作业
  4. 如果将作业添加到表中,则将新作业添加到列表中。
  5. 这些作业中的每一个都将从表中读取,进行一些计算,然后将结果写入表中。

我已经阅读了一些工具(石英、ScheduledExecutorService 等),但有没有真正提供这个功能?还是我必须自己写?

0 投票
0 回答
228 浏览

tomcat - 在tomcat上部署ScheduledExecutorService

我一直在使用周围的蜂鸣器控制示例来完成这项工作。它确实有效,但我需要将它集成到 Tomcat 服务器。我知道我必须使用侦听器并将其添加到 web.xml 文件中,但是有任何分步教程吗?或者谁能​​给我部署它的步骤?

谢谢

0 投票
2 回答
1356 浏览

java - 如何编写一个由于 scheduleExecutorService.shutdown 没有被调用而失败的测试?

我正在通过一个ScheduledExecutorService作为合作者的单位进行 TDD。这个单元有一个start方法,它基本上用任务启动执行程序,我现在想编写驱动该stop方法的测试,因为我知道没有人会调用ScheduledExecutorService.shutdown线程将挂起(默认情况下不是守护线程)。

我想通过@Test(timeout = 5000L)并使用实际的执行程序服务(而不是确定性服务)来构建单元,但我面临的问题是由于某种原因测试没有挂起。
我认为,不确定,这与 Intellij/Junit 混合调用system.exit和杀死“我的”jvm 有关。

在我用一种main方法编写的手动“测试”中,我可以验证在不调用该shutdown方法的情况下系统确实卡住了。

关于如何测试这个的任何想法?

谢谢

更新
我整理了一个小代码示例来说明问题:

0 投票
2 回答
272 浏览

java - 无法显示捕获的异常 (newSingleThreadScheduledExecutor)

对于计划执行者:

对于 processTask 方法:

我知道任务失败是有原因的,我不希望它在那之后继续(我使用 executor.shutdown() 来取消它)。

我只需要知道捕获异常时的错误是什么。在上面的方法中似乎没有这样做。

提前感谢您的任何回复。

0 投票
5 回答
626 浏览

java - 使用执行器框架还是普通线程?

最近收到一个面试题:

有一种情况,一个线程在一小时的间隔内执行批处理操作,你会使用执行器框架还是普通线程,为什么?

我很困惑 。

由于只有一个线程,因此不需要执行器服务。我可以使用while and来做到这一点sleep

虽然有一个 ScheduleExecutorService 提供了这么多调度方法?

什么是最好的方法?