ScheduledExecutorService与Timer和Handler的区别

17

使用 ScheduledExecutorService / Timer / Handler 有哪些优缺点?在 Android 中,我了解到需要使用 Handler 代替 Timer,但是 ScheduledExecutorService 呢?

据我所知,HandlerScheduledExecutorService 只适用于相对时间,是吗?


2
https://dev59.com/o3E95IYBdhLWcg3wY85l - assylias
2
定时器和ScheduledExecutor的主要区别在于:后者可以使用多个线程(通过线程池),并消除一个任务延迟下一个任务的风险。详见:https://dev59.com/-HRC5IYBdhLWcg3wG9Jb - assylias
这个展示了一个很好的解释 https://dev59.com/XWw15IYBdhLWcg3whMK_#6558821 - Wahib Ul Haq
1个回答

5
所有三种方式都允许您在不同的线程(例如非主线程)上执行任务。Handler 允许您使用消息传递 Actor 模式在线程之间安全地进行通信。它不允许您进行定时/延迟等操作。 ScheduledExecutorService 是一种非常通用的线程管理解决方案。您可以使用特定数量的工作线程初始化它,然后给它工作单元。您可以延迟/计时和重复工作单元。 Timer 类具有简单的 API,类似于一次性、单线程使用的 ScheduledExecutorService。官方 API 建议不要使用此类,而是自己编写 ScheduledExecutor。

8
你可以使用Handler#postDelayed(Runnable, interval)。 - siliconeagle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接