在过去的几个小时里,我读了很多关于它的文章,我根本看不出有任何理由(正当理由)调用shutdown()
.ExecutorService
使用了很长时间。
唯一的事情(据我所知)关闭所做的就是做一个普通线程在完成后所做的事情。当普通的 Thread 完成 Runnable(或 Callable)的 run 方法后,会被传递给 Garbage Collection 进行收集。使用 Executor Service,线程将被搁置,不会为垃圾收集打勾。为此,需要关闭。
好的,回到我的问题。是否有任何理由ExecutorService
经常调用关机,甚至在提交一些任务后立即调用?我想留下有人正在这样做的情况,并在此之后立即调用,awaitTermination()
因为这是经过验证的。一旦我们这样做了,我们必须重新创建一个新ExecutorService
的,做同样的事情。ExecutorService
重用线程的整个想法不是吗?那么为什么ExecutorService
这么快就毁掉了呢?
ExecutorService
简单地创建(或根据您需要的数量进行组合),然后在应用程序运行期间将任务传递给他们,然后在应用程序退出或其他一些重要阶段关闭这些执行程序,这不是一种合理的方式吗? ?
我想从一些使用 ExecutorServices 编写大量异步代码的经验丰富的程序员那里得到答案。
第二个问题,稍微小一点的涉及 android 平台。如果你们中的一些人会说每次都关闭执行程序并不是最好的主意,并且你的程序在 android 上,你能告诉我当我们处理不同的事件时你如何处理这些关闭(具体来说 - 当你执行它们时)的应用程序生命周期。
由于 CommonsWare 的评论,我使帖子保持中立。我真的没有兴趣争论到死,而且似乎它正在导致那里。我只对了解我在这里向经验丰富的开发人员提出的问题感兴趣,他们是否愿意分享他们的经验。谢谢。