我想编写一个每30分钟运行一次的程序。我正在使用Java调度的线程池执行程序来处理我提交给执行程序的任务。

我一直在看官方文档说的是https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html

我陷入了困境。

可以说我已经向队列提交了5个任务,并且我在线程池中定义了10个线程。


是否有可能其中一项任务应执行两次
线程池执行程序是否确保在某个线程处理完任务后将其删除,或者一旦处理完任务后我是否必须自己删除该任务。


删除任务是可取的,因为我不希望老任务在30分钟后仍然在队列中。

最佳答案

它只会执行一次,执行者会自动将其删除。

没有明确记录,而doc暗示了这一点:


  在将来的某个时间执行给定的任务。

10-07 13:50