我整个Android应用程序的一个线程池

时间:2018-08-02 08:00:17

标签: java android performance kotlin

like-网络操作和位图处理图像加载以及其他类型的工作,我可以为整个应用程序创建一个TheadPoolExecuter并在其上执行。

如果答案为否->为什么?以及如何为每个操作创建thread pool

或者如果是->是否出现性能问题?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

有条理的交谈,我认为您可以做到,根据oracle documentation,应该可以改善您的表现:

  

线程池解决了两个不同的问题:它们通常提供   在执行大量异步操作时提高了性能   任务,因为减少了每个任务的调用开销,并且它们提供了   限制和管理资源(包括线程)的方法,   在执行任务集合时消耗。每个ThreadPoolExecutor   还维护一些基本统计信息,例如完成的数量   任务。

答案 1 :(得分:0)

两种方法都有优点和缺点。

如果是单线程池(我想是单例实现):
➕您只有一个入口点来提交后台任务
➕易于实现和控制生命周期
如果您有许多不同的快速任务和一些长时间运行的任务,则长时间运行的任务可能会将所有线程保留在有限的池中,而用户在UI中等待一些快速操作

不同的线程池(一种任务类型为一个池):
long长时间运行的任务的线程池可以累积任务,而快速任务可以在其自己的线程池中独立执行
➕您了解应用程序中有关任务的所有信息-您可以使用线程工厂微调每种任务的池大小,设置线程优先级,初始堆栈大小等。
➕如果定义线程组和线程名称,则可以帮助您调试
➖具有不同的线程池涉及硬性控制其生命周期
implementation这种实现在按任务类别进行不良分离方面不会带来很多好处

任何情况下,您都需要妥协和评估优势