gpt4 book ai didi

java - 在 Java 中运行计划任务

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:58 24 4
gpt4 key购买 nike

我想在我的线程中按照顺序运行许多任务,这是我的应用程序的主线程:

@Component
public class LogExtractorApp extends CommonApp implements Runnable {

UDPReceiver receiver = new UDPReceiver();

public static Map<String, Entity> select;
public static List<String> pdomain;

private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

@Resource
MessagesCounts counters;

@Resource
DbUpdating update;

@Resource
DeleteData delete;

@Resource
ExcludeDomain domain;

@Override
public void run() {
select = counters.main();
pdomain = domain.main();
ExecutorService service = Executors.newCachedThreadPool();
service.execute(receiver);
scheduler.scheduleAtFixedRate(update, 5, 5, TimeUnit.MINUTES);
service.execute(delete);
}
}

当我启动应用程序时我想要的如下:

  1. 调用计数器的main方法。
  2. 调用domain的main方法。
  3. 启动线程“接收器”,该线程从远程服务器永久接收数据。
  4. 启动一个计划线程,每 5 分钟更新一次数据库。
  5. 记忆一下计数器的主要方法。 (我在这里提到那张 map “select”,用于线程“receiver”调用的方法中)。
  6. 启动线程“delete”来删除删除中的所有数据数据库早于 1 天。

*我当然希望三个线程永久转动*

我的问题:步骤 1,2,3,4 工作正常,但我不知道如何告诉我的应用程序每次在“更新”线程更新 map 值(“选择”)之后调用“计数器”的主要方法。对于“删除”线程,我曾经按照上面代码中所示的方式添加它,但它不是这样工作的。我很感谢对我的两个问题的任何建议,如果我必须在该问题中添加任何其他代码,请通过评论告诉我。

谢谢!

最佳答案

对于第 5 步,timerTask 类可以提供帮助,引用:http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html请参阅 java 文档以获取更多信息。

如果你延长timerTask,它也可以完成第6步,但是还有另一个用于调度java任务的巧妙工具,Quartz,http://quartz-scheduler.org/您可以在他们的网站上找到有关配置的更多信息。

关于java - 在 Java 中运行计划任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831185/

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