问题标签 [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 投票
2 回答
5559 浏览

java - java ScheduleExecutorService超时任务

我必须在某个时间间隔安排一些任务,并且必须终止花费超过指定时间的任务。

代码:

在上面的示例中,我想在不干扰其他任务执行的情况下终止耗时超过 5 秒(LongTask)的任务。实现这一目标的最佳方法是什么?

0 投票
2 回答
2710 浏览

java - scheduleAtFixedRate 没有在指定的延迟开始任务

我正在使用 SchedulerExecuterService 在指定的延迟后以给定的时间间隔执行任务。

发生的情况是第一次 taskThread 在延迟 60 秒后没有启动,它在延迟超过 60 秒后启动。而下一次执行以 120 秒的正确间隔开始(不完全是 120 秒,但有一个可以忽略的非常分钟的延迟)。

我的问题是为什么第一次执行延迟超过 60 秒?由于任务是由线程执行的,启动时间是否取决于线程优先级?

如何让它以 60 秒的精确延迟运行?Quartz 库呢?这个库会解决我的目的吗(在特定时间运行作业,不会有任何延迟)?

提前致谢。

0 投票
13 回答
158931 浏览

java - 如何使用 ScheduledExecutorService 每天在特定时间运行特定任务?

我每天早上 5 点尝试执行某项任务。所以我决定使用ScheduledExecutorService它,但到目前为止,我已经看到了一些示例,这些示例展示了如何每隔几分钟运行一次任务。

而且我找不到任何示例来说明如何在每天早上的特定时间(5 AM)运行任务,并且还考虑到夏令时的事实 -

下面是我的代码,它将每 15 分钟运行一次 -

ScheduledExecutorService有什么办法,考虑到夏令时的事实,我可以安排一个任务在每天早上 5 点运行吗?

并且TimerTask对此或更好ScheduledExecutorService

0 投票
1 回答
3621 浏览

java - 每天使用 ScheduledExecutorService 安排一个任务?

我习惯于每天早上ScheduledExecutorService运行一项特定任务3 AM。现在我不确定我下面的代码是否会在MyTask()每天3 AM早上调用?因为我不确定我的逻辑是否正确

为了测试这一点,我需要等待一天看看它是否有效,我不想这样做。

谁能帮我确定我上面的代码是否正确?

0 投票
1 回答
1189 浏览

executorservice - 一段时间后调用 ExecutorService

他们是一种使用 ExecutorService 来安排线程池的方法吗,类似于 thread.sleep()

我当前的代码看起来像

但我想调用 run 方法,只有在一段时间间隔之后。有人可以让我知道该怎么做吗?

0 投票
1 回答
68 浏览

java - 应用启动时如何启动后台线程

下面是我的界面 -

这是我的接口实现 -

以下是我的工厂代码 -

现在我有一个工厂,它可以获取这样的实例,TempClient因此客户在调用我们的代码时将使用我们的工厂,如下所示。

下面是我的后台线程代码 -

问题陈述:-

  1. 现在我有一个后台线程,它将在后台运行,它从 URL 中获取数据,解析它并将其存储在一个变量中。现在我想要的是,一旦我们的客户开始使用工厂调用使用我们的代码,我希望后台线程启动。所以我想我可以把后台线程调用放在我的工厂getInstance方法中。那是放在那里的正确位置吗?
0 投票
1 回答
91 浏览

java - 如何在地图存在时从地图中获取数据?

下面是我的启动后台线程的工厂代码TempScheduler-

现在客户将像这样使用上述工厂调用我们的代码。他们只会获取我们的 Client 实例一次,然后使用该实例继续调用read我的实现中的方法 -

下面是我的后台线程代码,它将从 URL 中获取数据,对其进行解析并将其存储在类变量中 -

在解析来自 URL 的数据后,我上面的后台线程将ClientData使用它的 setter 将结果存储在我的类中的变量中。下面是我的ClientData class

问题陈述:-

现在有趣的部分来了,正如您所看到的,客户将使用上述工厂调用我们的代码,一旦他们调用getInstance()方法,我的后台线程就会启动,它将从 URL 获取数据然后解析它并将其存储在类变量中。但是在getInstance()执行该方法后,他们会read method立即在我的客户端代码中进行调用..

然后我应该使用我的后台线程在我的实现代码中设置的变量。我的实现代码具有read方法用途CallableTaksfuture.get因此它会自动出现在下面的call方法中。在下面的类中,我应该使用由后台线程设置的变量值。我需要使用getPrimaryMapping方法来获取下面代码中的值。

这种方法的问题是,一旦客户第一次调用我们的工厂来获取实例,它就会启动后台线程,该线程将从 URL 中获取数据并解析它并将数据存储在类变量中,但是它会立即调用read我的实现类的方法..

现在可能第一次,我的后台线程仍在解析数据,但实际调用已经进入内部call method,然后它会尝试从getPrimaryMapping方法中获取数据,但它不会有任何东西,对吧?为什么 bcoz 它仍在解析数据.. 那么我如何确保当客户第一次调用我们的代码时,一旦解析完成,然后只允许在调用方法中获取变量值。

然后第二次就好了..由于数据会在内存中,只有第一次是问题..

有没有办法做到这一点?

0 投票
1 回答
83 浏览

java - 当数据可用时,如何从地图中获取数据?

我在我的代码中使用 Java Callable Future。以下是我使用未来和可调用对象的主要代码 -

下面是我Task的实现 Callable 接口的类,这个类需要从ClientData类方法中获取数据。我有一个后台线程,它ClientData使用设置器在类中设置数据。

下面是我的后台线程,它ClientData通过解析来自 URL 的数据来设置我的类中的值,它每 10 分钟运行一次。

下面是我的ClientData

问题陈述:-

我面临的唯一问题是,每当我第一次启动程序时,会发生什么,它将启动后台线程,该线程将解析来自 URL 的数据。同时,它将进入call我的Task课堂方法。下面的行会抛出异常,为什么?bcoz 我的后台线程仍在解析数据,它还没有设置该变量。

我该如何避免这个问题?有没有更好更有效的方法来做到这一点?

0 投票
2 回答
501 浏览

java - 如何使用 ScheduledExecutors 只运行一次后台线程?

下面是我的界面 -

这是我的接口实现 -

以下是我的工厂代码 -

现在我有一个工厂,它像这样获取 TempClient 的实例,因此客户在调用我们的代码时将使用我们的工厂,如下所示。

下面是我的后台线程代码 -

问题陈述:-

  1. 现在我有一个后台线程,它将在后台运行,它从 URL 中获取数据,解析它并将其存储在一个变量中。现在我想要的是,一旦我们的客户开始使用工厂调用使用我们的代码,我希望后台线程启动。所以我决定把这个电话放在我上面TempClientFactory,它工作得很好..

现在这种方法的问题是,客户将继续调用我的 TempClientFactory 所以它会一直启动后台线程。我正在寻找的是,如果后台线程启动一次,那么我不想启动它再次从另一个线程开始,但它应该在幕后每 10 分钟运行一次,因为它已经第一次启动了。

如果我的理解是正确的,假设如果我调用我的 TempClientFactory 一次,那么它将启动后台线程,我的后台线程将继续每 10 分钟运行一次。如果我再次调用我的工厂,那么它将启动相同再次后台,它也将每 10 分钟运行一次?或者它只会启动一个每 10 分钟运行一次的后台线程?

0 投票
1 回答
121 浏览

java - 哪个更好 - SchedulerExecutorService 或 Quartz api

我想在指定的延迟后以给定的时间间隔运行任务。

如果我使用 SchedulerExecutorService,因为它使用线程,所以任务执行会延迟一点。

我无法承受执行延迟。我怎样才能让它以精确的指定时间间隔运行?

Quartz 库呢?这个库能解决目的吗?

由于我对 Quartz 库不是很了解,所以我也想知道 SchedulerExecutorService 和 Quartz api 有什么区别?

笔记:

我还问过为什么使用 SchedulerExecutorService 会延迟的问题。请参考。