gpt4 book ai didi

java - 具有可变延迟的 ScheduledExecutorService

转载 作者:IT老高 更新时间:2023-10-28 20:51:22 25 4
gpt4 key购买 nike

假设我有一个任务是从 java.util.concurrent.BlockingQueue 中提取元素并处理它们。

public void scheduleTask(int delay, TimeUnit timeUnit)
{
scheduledExecutorService.scheduleWithFixedDelay(new Task(queue), 0, delay, timeUnit);
}

如果可以动态更改频率,我如何安排/重新安排任务?

  • 这个想法是获取数据更新流并将它们批量传播到 GUI
  • 用户应该能够改变更新频率

最佳答案

使用 schedule(Callable<V>, long, TimeUnit)而不是 scheduleAtFixedRatescheduleWithFixedDelay .然后确保您的 Callable 在未来的某个时间重新安排自身或新的 Callable 实例。例如:

// Create Callable instance to schedule.
Callable<Void> c = new Callable<Void>() {
public Void call() {
try {
// Do work.
} finally {
// Reschedule in new Callable, typically with a delay based on the result
// of this Callable. In this example the Callable is stateless so we
// simply reschedule passing a reference to this.
service.schedule(this, 5000L, TimeUnit.MILLISECONDS);
}
return null;
}
}

service.schedule(c);

这种方法无需关闭并重新创建 ScheduledExecutorService .

关于java - 具有可变延迟的 ScheduledExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com