2011-09-14 38 views
0

我知道線程和任務處於不同的抽象層次,但無論如何,我仍然困惑他們之間的關係是什麼。順便說一句,我認爲任務告訴如何做一份工作和線程根據任務instance.Is我的理解是否正確實際上EXCUTE的工作嗎?感謝ü^線程和任務的關係是什麼?

+7

什麼是任務?它是Java類嗎? –

+0

我想這是關於['java.util.concurrent.FutureTask'](http://download.oracle.com/javase/7/docs/api/java/util/concurrent/FutureTask.html)討論[這個早先的問題](http://stackoverflow.com/questions/7412491/whether-method-cancel-and-method-interrupt-do-the-duplicate-job/7412704#7412704) –

+0

是的。和我的理解,他們在那裏做同樣的工作,是否正確?謝謝你 –

回答

3

我想通過任務你的意思是RunnableCallable。的關係很簡單:

主題可能被用來執行多個任務

  • 威力 - 因爲你並不需要一個單獨的線程來執行任務(以及,從技術上說,一切都在線內運行 - 你不需要單獨的一個)

  • 多個 - 線程可以重用;它可以從一個集合像隊列

運行多個任務通常一個線程執行傳遞給ExecutorService(包裝線程池在大多數情況下)一個Runnable傳遞給Thread構造函數或多個Callable秒。

+0

謝謝你。我有你的意思。我還有一個類似的問題:我讀了org.apache.nutch.parse.ParseUtil.runParser(Parser p,Content content)的源代碼。 做這兩個方法調用做同樣的事情: 指令1: t.interrupt(); 指令2: task.cancel(true); –

+0

請把它作爲一個單獨的問題發佈 –

+0

Tomas:他[已經](http://stackoverflow.com/questions/7412491/whether-method-cancel-and-method-interrupt-do-the-duplicate-job/7412704 #7412704)... 1小時前。 –

0

如果Task你的意思是這樣this,那麼不同的是,任務是用來運行一些線狀代碼執行,但有額外的屬性,例如,當運行它,多少次,和選項取消它的執行,而一個線程將會立即執行一次。

0

任務相當抽象,可以作爲一個進程或線程來實現。

0

你的理解是正確的。

我們可以用workflow patterns進行類比,其中任務是需要在進程中完成的事情,而線程是用於處理或執行它們的資源。

+0

謝謝你,我有你的意思 –

相關問題