在执行器服务上调用 shutdown() 的原因
在过去的几个小时里,我读到了很多关于它的文章,我根本看不出有任何理由(有效的理由)来调用,除非我们有一个巨大的应用程序来存储,数十个不同的执行器服务,这些服务在很长一段时间内都没有使用。shutdown()
ExecutorService
关机唯一(从我收集到的信息来看)是做正常线程完成后所做的事情。当普通线程完成 Runnable(或 Callable) 的 run 方法时,它将被传递给垃圾回收进行收集。使用执行器服务,线程将被简单地置于保留状态,它们不会被勾选用于垃圾回收。为此,需要关闭。
好的,回到我的问题。是否有任何理由经常调用关闭,甚至在提交某些任务后立即调用关闭?我想把有人正在做这件事的情况抛在脑后,然后打电话,因为这是经过验证的。一旦我们这样做了,我们就必须重新创建一个新的,做同样的事情。重用线程的整个想法不就是这样吗?那么,为什么要这么快就销毁呢?ExecutorService
awaitTermination()
ExecutorService
ExecutorService
ExecutorService
简单地创建(或根据您需要多少个)而不是一个合理的方法,然后在应用程序运行期间将任务传递给它们,一旦它们出现,然后在应用程序退出或其他一些重要阶段关闭这些执行器,这难道不是一种合理的方法吗?ExecutorService
我希望从一些有经验的编码人员那里得到答案,他们确实使用ExecutorServices编写了很多异步代码。
第二个问题,与Android平台的交易有点小。如果你们中的一些人会说,每次都关闭执行器和Android上的程序不是最好的主意,你能告诉我当我们处理应用程序生命周期的不同事件时,你如何处理这些关闭(具体来说 - 当你执行它们时)。
由于CommonsWare的评论,我使帖子中立。我真的没有兴趣争论到死,它似乎正在引领那里。我只有兴趣了解我在这里向有经验的开发人员提出的问题,如果他们愿意分享他们的经验。谢谢。