Android,Java:ExecutorService在关机后执行

时间:2014-10-01 14:00:50

标签: java android

我有ExecutorService

private final ExecutorService listenDataExecutorService = 
                              Executors.newSingleThreadExecutor();

在同样的情况下,我需要遗嘱执行人员停止工作。 为此,我致电listenDataExecutorService.shutdown();

然后过了一段时间,我需要这个执行者再次完成这项工作。 但是当我调用listenDataExecutorService.execute()时会抛出异常。

如何在shutdown之后执行执行程序的新任务?

2 个答案:

答案 0 :(得分:3)

一旦关闭执行程序服务,就无法重新激活它。创建一个新的执行程序服务以重新启动执行:

listenDataExecutorService = Executors.newSingleThreadExecutor();

(您必须删除final修饰符。)

另一种选择是取消所有待处理的任务,然后在您想要恢复执行时重新安排它们。

答案 1 :(得分:0)

首先,您必须删除final访问级别修饰符,才能在后期重新创建ExecutorServicefinal修饰符不允许您稍后在重新初始化期间更改ExecutorService的引用。

  

在同样的情况下,我需要遗嘱执行人员停止工作。为此,我致电listenDataExecutorService.shutdown();

您必须以正确的顺序调用三个方法才能关闭ExecutorServiceshutdown, awaitTermination, shutdownNow

看看下面的帖子:

How to properly shutdown java ExecutorService

  

然后过了一段时间,我需要这个执行者再次完成这项工作。但是当我调用listenDataExecutorService.execute()时会抛出异常。

     

如何在关机后执行执行程序的新任务?

execute上致电ExecutorService之前,该服务不应处于shutdown状态。确保ExecutorService处于正确状态才能接受任务=>您的应用程序代码应正确处理" 关闭 "和" 重新创建 " ExecutorService