为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2021-06-16 21:14:06
像 - 网络操作和位图操作图像加载和其他类型的工作,我可以TheadPoolExecuter为我的整个应用程序创建一个并在其上执行。如果答案是否定的 -> 为什么?以及如何thread pool为每个操作创建?或者如果是 -> 是否发生性能问题?
查看完整描述

2 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

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

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

不同的线程池(一种任务一个池):
➕ 长时间运行任务的线程池可以累积任务,而快速任务可以在自己的线程池中独立执行
➕ 你对你的应用程序中的任务了如指掌 - 你可以使用线程工厂为每种类型的任务微调池大小,设置线程优先级,初始堆栈大小等
➕ 如果您定义线程组和线程名称,它可以帮助您进行调试
➖ 涉及不同的线程池来硬控制它们的生命循环
➖这个实现不会在任务类分离不佳的情况下带来很多好处

无论如何,您需要做出一些妥协并评估优势


查看完整回答
反对 回复 2021-06-23
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

我认为你可以做到这一点,并且根据oracle 文档应该可以提高你的表现:

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


查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信