Android ThreadPool 类扩展应用

Posted

技术标签:

【中文标题】Android ThreadPool 类扩展应用【英文标题】:Android ThreadPool class extend application 【发布时间】:2017-06-23 23:21:11 【问题描述】:

我是多线程新手,但我有一个问题:

拥有一个扩展应用程序的类并在那里声明/初始化一个可以从任何其他活动/片段访问的自定义线程池是一种很好的做法?

或者有没有办法在一个地方为所有应用声明一个线程池?

谢谢

【问题讨论】:

由于“所有应用程序”由扩展应用程序的类表示,因此将所有应用程序共有的东西放在那里是很自然的。包括线程池。 【参考方案1】:

我认为这方面没有经验法则,但就像 android 文档在这里所说的那样:https://developer.android.com/training/multiple-threads/create-threadpool.html#ClassStructure,您应该使用带有静态实例的类来检索和使用每个 Activity 中的 ThreadPool你需要它。

【讨论】:

应尽可能避免使用静态变量。 Thay 仅适用于常量。将线程池放在 Application 子类中会更好。 不是在这种特殊情况下,静态 ThreadPool 真的很有用,因为它可以从您的应用程序的任何地方访问,并且如果不需要活动上下文(而且它不应该)没有办法弄乱自己有一些隐藏的内存泄漏。将静态 ThreadPool 放在自定义 Application 类中与静态 ThreadPool 实例相比没有任何优势,因为您不应该将 ThreadPool 用于通用任务,而是创建特定任务 如果我把它放在服务中怎么办?我将每个新的打开活动与此服务绑定并使用线程池。这个比较好 ?我的基本问题有最佳实践吗?谢谢 最佳做法是:如果您有疑问,请遵循文档(如果存在),在您的情况下,答案在我粘贴给您的链接中。将其放入服务中并在每个活动中绑定/取消绑定将成为正确处理的地狱,不惜一切代价避免它。

以上是关于Android ThreadPool 类扩展应用的主要内容,如果未能解决你的问题,请参考以下文章

Java并发之ThreadPool

dubbo源码:ThreadPool

dubbo源码:ThreadPool

mysql can't create threads in threadpool

threadpool和Queue

Android 开发 ThreadPool(线程池) 总结