2013-04-12 91 views
4

哪一个更容易,更适合用于在另一个线程中运行,特别是程序等待结果但不锁定ui。可运行或执行程序服务

可能有一种方法比这两种都好,但我不知道它们。

谢谢:)

+0

这取决于你需要运行什么样的线程,你能给我们一些细节吗? – ddmps

+0

我正在使用Cling UPNP库,并希望从中获取信息而不会阻止UI,因为它经常在一段时间后才会得到结果 – Cooltrooper

回答

10
  • Runnable表示码被执行。
  • Executor及其子类表示执行策略。

这意味着前者实际上是由后者消耗的。你可能的意思是:在简单的线程和执行者之间,哪个更合适?

这个问题的答案基本上是:取决于。

Executor s是复杂的工具,可让您选择可能运行多少个并发任务,并调整执行上下文的不同方面。他们还通过返回令牌(称为Future或有时是承诺)来提供工具来监视任务的执行情况,该令牌让代码请求任务执行以查询该任务完成情况。

线程不太精细(或更准系统)异步执行代码的解决方案。您仍然可以让他们手动返回Future,或者直接检查线程是否仍在运行。

所以,也许取决于你需要的复杂程度,你可以选择其中一个:Executor s用于更简化的需求(执行和监视许多任务),一次性线程或更简单的情况。

+0

这是查看差异的好方法,谢谢:) – Cooltrooper

+0

。 ..别客气 :) – didierc

相关问题