在过去的几个小时里,我读了很多关于它的文章,除非我们有一个巨大的应用程序,它存储了很多很多不同的执行服务,但是很长一段时间都没有使用,否则我就找不到任何理由(有效的理由)在 ExecutorService
上调用 shutdown()
。
关闭所做的唯一一件事(据我所知)就是完成普通 Thread 完成后所做的事情。当普通线程完成 Runnable (或 Callable)的 run 方法时,它将被传递给要收集的垃圾收集。使用 ExecuterService,线程将被简单地暂停,不会为垃圾回收勾选线程。为此,政府必须停摆。
好吧,回到我的问题。是否有任何理由经常在 ExecutorService
上调用关机,甚至在提交了一些任务之后立即调用关机?我想留下的情况下,有人正在这样做,然后立即调用 awaitTermination()
,因为这是有效的。一旦我们做到这一点,我们必须重新创建一个新的 ExecutorService
所有再次,做同样的事情。ExecutorService
重用线程的整个想法不就是这样吗?那为什么这么快就摧毁了 ExecutorService
?
这难道不是一种简单的创建 ExecutorService
(或者根据需要创建多少对 ExecutorService
)的合理方式吗? 然后在应用程序运行期间,一旦任务出现,就将它们传递给它们,然后在应用程序退出或者其他一些重要阶段关闭这些执行器?
我想从一些有经验的程序员那里得到一个答案,他们使用 ExecutorServices 编写了很多异步代码。
第二个问题,小一点的机器人平台。如果你们中的一些人会说,每次关闭执行程序以及你们在 android 上的程序并不是最好的主意,你能告诉我当我们处理应用程序生命周期中的不同事件时,你们是如何处理这些关闭的(具体来说——当你执行它们的时候)。
因为共享软件的评论,我把文章写成了中立的。我真的没有兴趣为此争论到死,而且它似乎正在引向那里。如果有经验的开发人员愿意分享他们的经验,我只对我在这里向他们询问的内容感兴趣。谢谢。