2013-04-12 129 views
4

哪一個更容易,更適合用於在另一個線程中運行,特別是程序等待結果但不鎖定ui。可運行或執行程序服務

可能有一種方法比這兩種都好,但我不知道它們。

謝謝:)

+0

這取決於你需要運行什麼樣的線程,你能給我們一些細節嗎? – ddmps

+0

我正在使用Cling UPNP庫,並希望從中獲取信息而不會阻止UI,因爲它經常在一段時間後纔會得到結果 – Cooltrooper

回答

10
  • Runnable表示碼被執行。
  • Executor及其子類表示執行策略。

這意味着前者實際上是由後者消耗的。你可能的意思是:在簡單的線程和執行者之間,哪個更合適?

這個問題的答案基本上是:取決於。

Executor s是複雜的工具,可讓您選擇可能運行多少個併發任務,並調整執行上下文的不同方面。他們還通過返回令牌(稱爲Future或有時是承諾)來提供工具來監視任務的執行情況,該令牌讓代碼請求任務執行以查詢該任務完成情況。

線程不太精細(或更準系統)異步執行代碼的解決方案。您仍然可以讓他們手動返回Future,或者直接檢查線程是否仍在運行。

所以,也許取決於你需要的複雜程度,你可以選擇其中一個:Executor s用於更簡化的需求(執行和監視許多任務),一次性線程或更簡單的情況。

+0

這是查看差異的好方法,謝謝:) – Cooltrooper

+0

。 ..別客氣 :) – didierc

相關問題