Java 如何执行长时间运行的任务?

Java 如何执行长时间运行的任务?,java,multithreading,Java,Multithreading,执行器通常用于(短时间运行的)任务,但处理长时间运行的任务(例如应在应用程序整个生命周期内运行的任务)的最佳方法是什么 假设我有一个应用程序,其中一个在单独线程上运行的任务每X秒轮询一个目录的更改。除非应用程序退出,否则此任务不应退出轮询。我如何开始和管理这一点 新线程(长运行任务).start()会是一个很糟糕的选项吗?这也是Executors框架的一个用例,特别是。当应用程序完成时,请注意挂在周围的线程。您可以使用定制的ThreadFactory来生成守护进程线程。或者,如果您想要更简单的东

执行器通常用于(短时间运行的)任务,但处理长时间运行的任务(例如应在应用程序整个生命周期内运行的任务)的最佳方法是什么

假设我有一个应用程序,其中一个在单独线程上运行的任务每X秒轮询一个目录的更改。除非应用程序退出,否则此任务不应退出轮询。我如何开始和管理这一点


新线程(长运行任务).start()
会是一个很糟糕的选项吗?

这也是Executors框架的一个用例,特别是。当应用程序完成时,请注意挂在周围的线程。您可以使用定制的
ThreadFactory
来生成守护进程线程。或者,如果您想要更简单的东西,请使用API。您可以构造一个
计时器
,其布尔参数表示“使用守护进程线程”。您还可以在应用程序结束时显式关闭executor服务。

您可以在退出时关闭executor,而不是threadfactory+守护进程(假设提交的任务对中断友好和/或不总是运行)。是,我同意-我不太喜欢守护进程线程,因为它们很容易在线程管理方面脱离您的控制。