像 - 网络操作和位图操作图像加载和其他类型的工作,我可以TheadPoolExecuter为我的整个应用程序创建一个并在其上执行。如果答案是否定的 -> 为什么?以及如何thread pool为每个操作创建?或者如果是 -> 是否发生性能问题?
2 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
这两种方法都有优点和缺点。
在单线程池的情况下(我想是单例实现):
➕ 你有一个入口点来提交后台任务
➕ 很容易实现和控制生命周期
➖ 如果你有很多不同的快速任务和一些长时间运行的任务,很长正在运行的任务可能会将所有线程保留在有限的池中,而用户在 UI 中等待一些快速操作
不同的线程池(一种任务一个池):
➕ 长时间运行任务的线程池可以累积任务,而快速任务可以在自己的线程池中独立执行
➕ 你对你的应用程序中的任务了如指掌 - 你可以使用线程工厂为每种类型的任务微调池大小,设置线程优先级,初始堆栈大小等
➕ 如果您定义线程组和线程名称,它可以帮助您进行调试
➖ 涉及不同的线程池来硬控制它们的生命循环
➖这个实现不会在任务类分离不佳的情况下带来很多好处
无论如何,您需要做出一些妥协并评估优势
添加回答
举报
0/150
提交
取消