问题标签 [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.
java - java ScheduleExecutorService超时任务
我必须在某个时间间隔安排一些任务,并且必须终止花费超过指定时间的任务。
代码:
在上面的示例中,我想在不干扰其他任务执行的情况下终止耗时超过 5 秒(LongTask)的任务。实现这一目标的最佳方法是什么?
java - scheduleAtFixedRate 没有在指定的延迟开始任务
我正在使用 SchedulerExecuterService 在指定的延迟后以给定的时间间隔执行任务。
发生的情况是第一次 taskThread 在延迟 60 秒后没有启动,它在延迟超过 60 秒后启动。而下一次执行以 120 秒的正确间隔开始(不完全是 120 秒,但有一个可以忽略的非常分钟的延迟)。
我的问题是为什么第一次执行延迟超过 60 秒?由于任务是由线程执行的,启动时间是否取决于线程优先级?
如何让它以 60 秒的精确延迟运行?Quartz 库呢?这个库会解决我的目的吗(在特定时间运行作业,不会有任何延迟)?
提前致谢。
java - 如何使用 ScheduledExecutorService 每天在特定时间运行特定任务?
我每天早上 5 点尝试执行某项任务。所以我决定使用ScheduledExecutorService
它,但到目前为止,我已经看到了一些示例,这些示例展示了如何每隔几分钟运行一次任务。
而且我找不到任何示例来说明如何在每天早上的特定时间(5 AM)运行任务,并且还考虑到夏令时的事实 -
下面是我的代码,它将每 15 分钟运行一次 -
ScheduledExecutorService
有什么办法,考虑到夏令时的事实,我可以安排一个任务在每天早上 5 点运行吗?
并且TimerTask
对此或更好ScheduledExecutorService
?
java - 每天使用 ScheduledExecutorService 安排一个任务?
我习惯于每天早上ScheduledExecutorService
运行一项特定任务3 AM
。现在我不确定我下面的代码是否会在MyTask()
每天3 AM
早上调用?因为我不确定我的逻辑是否正确
为了测试这一点,我需要等待一天看看它是否有效,我不想这样做。
谁能帮我确定我上面的代码是否正确?
executorservice - 一段时间后调用 ExecutorService
他们是一种使用 ExecutorService 来安排线程池的方法吗,类似于 thread.sleep()
我当前的代码看起来像
但我想调用 run 方法,只有在一段时间间隔之后。有人可以让我知道该怎么做吗?
java - 应用启动时如何启动后台线程
下面是我的界面 -
这是我的接口实现 -
以下是我的工厂代码 -
现在我有一个工厂,它可以获取这样的实例,TempClient
因此客户在调用我们的代码时将使用我们的工厂,如下所示。
下面是我的后台线程代码 -
问题陈述:-
- 现在我有一个后台线程,它将在后台运行,它从 URL 中获取数据,解析它并将其存储在一个变量中。现在我想要的是,一旦我们的客户开始使用工厂调用使用我们的代码,我希望后台线程启动。所以我想我可以把后台线程调用放在我的工厂
getInstance
方法中。那是放在那里的正确位置吗?
java - 如何在地图存在时从地图中获取数据?
下面是我的启动后台线程的工厂代码TempScheduler
-
现在客户将像这样使用上述工厂调用我们的代码。他们只会获取我们的 Client 实例一次,然后使用该实例继续调用read
我的实现中的方法 -
下面是我的后台线程代码,它将从 URL 中获取数据,对其进行解析并将其存储在类变量中 -
在解析来自 URL 的数据后,我上面的后台线程将ClientData
使用它的 setter 将结果存储在我的类中的变量中。下面是我的ClientData class
。
问题陈述:-
现在有趣的部分来了,正如您所看到的,客户将使用上述工厂调用我们的代码,一旦他们调用getInstance()
方法,我的后台线程就会启动,它将从 URL 获取数据然后解析它并将其存储在类变量中。但是在getInstance()
执行该方法后,他们会read method
立即在我的客户端代码中进行调用..
然后我应该使用我的后台线程在我的实现代码中设置的变量。我的实现代码具有read
方法用途CallableTaks
,future.get
因此它会自动出现在下面的call
方法中。在下面的类中,我应该使用由后台线程设置的变量值。我需要使用getPrimaryMapping
方法来获取下面代码中的值。
这种方法的问题是,一旦客户第一次调用我们的工厂来获取实例,它就会启动后台线程,该线程将从 URL 中获取数据并解析它并将数据存储在类变量中,但是它会立即调用read
我的实现类的方法..
现在可能第一次,我的后台线程仍在解析数据,但实际调用已经进入内部call method
,然后它会尝试从getPrimaryMapping
方法中获取数据,但它不会有任何东西,对吧?为什么 bcoz 它仍在解析数据.. 那么我如何确保当客户第一次调用我们的代码时,一旦解析完成,然后只允许在调用方法中获取变量值。
然后第二次就好了..由于数据会在内存中,只有第一次是问题..
有没有办法做到这一点?
java - 当数据可用时,如何从地图中获取数据?
我在我的代码中使用 Java Callable Future。以下是我使用未来和可调用对象的主要代码 -
下面是我Task
的实现 Callable 接口的类,这个类需要从ClientData
类方法中获取数据。我有一个后台线程,它ClientData
使用设置器在类中设置数据。
下面是我的后台线程,它ClientData
通过解析来自 URL 的数据来设置我的类中的值,它每 10 分钟运行一次。
下面是我的ClientData
课
问题陈述:-
我面临的唯一问题是,每当我第一次启动程序时,会发生什么,它将启动后台线程,该线程将解析来自 URL 的数据。同时,它将进入call
我的Task
课堂方法。下面的行会抛出异常,为什么?bcoz 我的后台线程仍在解析数据,它还没有设置该变量。
我该如何避免这个问题?有没有更好更有效的方法来做到这一点?
java - 如何使用 ScheduledExecutors 只运行一次后台线程?
下面是我的界面 -
这是我的接口实现 -
以下是我的工厂代码 -
现在我有一个工厂,它像这样获取 TempClient 的实例,因此客户在调用我们的代码时将使用我们的工厂,如下所示。
下面是我的后台线程代码 -
问题陈述:-
- 现在我有一个后台线程,它将在后台运行,它从 URL 中获取数据,解析它并将其存储在一个变量中。现在我想要的是,一旦我们的客户开始使用工厂调用使用我们的代码,我希望后台线程启动。所以我决定把这个电话放在我上面
TempClientFactory
,它工作得很好..
现在这种方法的问题是,客户将继续调用我的 TempClientFactory 所以它会一直启动后台线程。我正在寻找的是,如果后台线程启动一次,那么我不想启动它再次从另一个线程开始,但它应该在幕后每 10 分钟运行一次,因为它已经第一次启动了。
如果我的理解是正确的,假设如果我调用我的 TempClientFactory 一次,那么它将启动后台线程,我的后台线程将继续每 10 分钟运行一次。如果我再次调用我的工厂,那么它将启动相同再次后台,它也将每 10 分钟运行一次?或者它只会启动一个每 10 分钟运行一次的后台线程?
java - 哪个更好 - SchedulerExecutorService 或 Quartz api
我想在指定的延迟后以给定的时间间隔运行任务。
如果我使用 SchedulerExecutorService,因为它使用线程,所以任务执行会延迟一点。
我无法承受执行延迟。我怎样才能让它以精确的指定时间间隔运行?
Quartz 库呢?这个库能解决目的吗?
由于我对 Quartz 库不是很了解,所以我也想知道 SchedulerExecutorService 和 Quartz api 有什么区别?
笔记: