java - 我的整个 android 应用程序的一个线程池
问题描述
TheadPoolExecuter
像 - 网络操作和位图操作图像加载和其他类型的工作我可以为我的整个应用程序创建一个并在其上执行。
如果答案是否定的 -> 为什么?以及如何thread pool
为每个操作创建?
或者如果是 -> 是否出现性能问题?
提前致谢。
解决方案
两种方法都有优点和缺点。
在单线程池的情况下(我想是单例实现):
➕你有一个提交后台任务的入口点
➕它很容易实现和控制生命周期
➖如果你有很多不同的快速任务和一些长时间运行的任务,很长当用户在 UI 中等待一些快速操作时,正在运行的任务可能会将所有线程保留在有限的池中
不同的线程池(一个池用于一种任务):
➕长时间运行的任务的线程池可以累积任务,而快速任务可以在它们自己的线程池中独立执行
➕您了解应用程序中有关任务的所有信息-您可以使用线程工厂为每种类型的任务微调池大小,设置线程优先级,初始堆栈大小等
➕如果您定义线程组和线程名称,它可以帮助您进行调试
➖有不同的线程池涉及硬控制它们的生活循环
➖ 这种实现不会在任务类分离不佳的情况下带来很多好处
无论如何,您都需要一些妥协和对优势的评估
推荐阅读
- google-app-engine - 如何将子域映射到 Google Cloud App Engine 服务并将主域加载静态网站托管在共享主机上?
- flutter - DatePicker + Streams,可以做到吗?
- ios - 在 SwiftUI 中从孩子的 alignmentGuide 修饰符获取父视图宽度/高度?
- ssl - 入口 GCP 的 SSL 策略
- c# - netstandard2.1 版本的 CancellationTokenRegistration.Unregister()
- javascript - react.js 中的道具问题
- ruby - 从Ruby中的数组中删除前导零元素
- javascript - jquery滚动到网页部分
- jenkins - 如何在 Windows 上重新启动 Jenkins?
- python - AttributeError:“模块”对象在使用 Python3 的 Apache 中没有属性“lru_cache”