Java 在一个线程中安排多个任务

Java 在一个线程中安排多个任务,java,scheduled-tasks,timertask,Java,Scheduled Tasks,Timertask,我想让一个线程负责按不同时间间隔安排的多个任务。我想从计划程序中添加和删除任务。有没有图书馆可以帮我做这件事。如果不是,我会自己编写代码,只是不想重新发明轮子 对于后台,我想向我的应用程序添加警报,由单个线程控制,应用程序的其余部分可以在其中添加/删除计划任务。我可以使用多个TimerTask或编写自己的单线程调度程序,但如果有更好的选择,我不想忽略它 詹姆斯退房。它几乎是Java中任务调度的首选。如果浏览文档,可以将其配置为单线程。如果需要基本库,可以使用内置的。这允许添加重复任务并取消它们。

我想让一个线程负责按不同时间间隔安排的多个任务。我想从计划程序中添加和删除任务。有没有图书馆可以帮我做这件事。如果不是,我会自己编写代码,只是不想重新发明轮子

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


詹姆斯退房。它几乎是Java中任务调度的首选。如果浏览文档,可以将其配置为单线程。

如果需要基本库,可以使用内置的。这允许添加重复任务并取消它们。您可以将其设置为单线程。

如果您需要在JDK 1.5或更高版本中开箱即用的东西,您看过ScheduledExecutorService吗

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

()

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

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

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