在 android 终止之前,我可以让线程池没有任务多长时间?

How long can I leave a threadpool without tasks before it terminates in android?

我刚开始使用 ThreadPools 在我的 android 应用程序中执行多线程。过去,我创建了新线程来执行网络请求、数据库查询和密集算法。据此 post new Thread(task).start() VS ThreadPoolExecutor.submit(task) in Android ,使用线程池更好。

当我重新设计我的程序以使用 ThreadpoolExecutor 时,我一直在努力回答的问题是 "What happens to my threadPool if no tasks are sent to it for a while?" 例如,假设我正在构建一个从服务器提取信息并显示它的应用程序给用户。用户还可以通过从服务器拉取一组更新的数据来更新显示的信息。用户可以随时更新信息。更新之间可能长达几个小时。

这可以使用新线程来完成,但是,每次最终用户刷新时,都必须为线程分配新内存。我希望做的是使用线程池,这样我就可以 运行 网络调用而不必每次都分配内存。然而,这是建立在两个假设之上的。首先是我可以将线程池​​单独放置一段不确定的时间,但仍然可以使用它。第二个是这种使用线程模型的方法符合良好实践。假设第二个为真,如果线程池确实关闭或自行终止,我可以让线程池多长时间没有执行任务?

我相信它只会在应用程序的生命周期内保持可用,除非您在线程池上显式调用 'shutdown()'。