gpt4 book ai didi

java - 在单个线程中安排多个任务

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:22 27 4
gpt4 key购买 nike

我想让一个线程维护在不同时间间隔安排的多个任务的责任。我想在调度程序中添加和删除任务。有没有图书馆可以帮助我解决这个问题。如果没有,我会自己编写代码,只是不想重新发明轮子。

对于背景,我想向我的应用程序添加警报,由单个线程控制,应用程序的其余部分可以在其中添加/删除计划任务。我可以使用多个 TimerTask 或编写我自己的单线程调度程序,但如果有更好的选择,我不想忽略它。

詹姆斯

最佳答案

如果您需要 JDK 1.5 或更高版本中开箱即用的功能,您是否看过 ScheduledExecutorService?

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html

您可以使用此工厂方法创建其中之一,由单个线程支持:

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executors.html#newSingleThreadScheduledExecutor ()

还有一个替代工厂方法接受 ThreadFactory 作为参数。这使您有机会自定义将在 ScheduledExecutorService 中运行的线程。例如,您可以调用 Thread.setName 为线程指定一个更有意义的名称。这对于调试应用程序非常有帮助。当您生成完整的线程转储时,您会看到附加到线程的自定义名称,而不是 JVM 自动附加的通用名称。

根据需要,调用 Thread.setDaemon(true) 也是合适的,这样该线程就不会阻塞 JVM 关闭。

另外,最好的做法是在完成任何 ExecutorService 后通过调用 ExecutorService.shutdown 或 ExecutorService.shutdownNow 来清理它。如果没有保证调用关闭(例如在 finally block 中),则可能会在您的应用程序中引入线程泄漏错误。从您描述的用法来看,这听起来不太可能会影响您,但是当我向某人推荐使用 ExecutorService 时,我总是喜欢强调这一点。 JavaDocs 很容易忽略这一点。

关于java - 在单个线程中安排多个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254927/

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