2009-11-21 186 views
1

我好幾年沒有和Java線程一起工作過,所以我有一個關於多線程的非常基本的問題。我正在編寫一個將被另一種語言(matlab)調用的java包。 Matlab能夠實例化一個Java類並運行java代碼。Java中的多線程應用程序?

我希望能夠到:

  1. 啓動多個線程
  2. 獲取所有正在運行的線程的列表
  3. 停止名稱定線程
  4. 停止所有線程

我過去曾使用Thread類,但現在有沒有更簡單/更完整的軟件包?任何人都可以提供一個簡單的演示,或者指向我關於這個主題的教程嗎?

回答

4

也許在Java中的online supplement併發編程來看看例子:設計原則和模式由Doug Lea的是書線程和併發編程(但不包括新java.util.concurrent包)。

或者Brian Goetz撰寫,蒂姆·佩爾斯,約書亞布洛赫,約瑟夫Bowbeer,大衛·霍姆斯,Doug Lea的檢查更近Java併發實踐(夢之隊這樣的書)及其companion website

3

Executor接口提供了很多有用的方法來管理和執行線程,我會建議看看這個。還有一個Executors類,它提供了不同的線程池選項,並且有一些很好的信息here

+0

Afaik,執行者沒有辦法按名稱控制線程。一旦提交了任務或Runnable,就不再有任何控制。 – mhaller 2009-11-21 20:16:13

1

警告:如果您需要能夠安全地停止線程,則需要對它們進行編碼,以便它們能夠正確響應Thread.interrupt()。例如,計算密集型線程偶爾需要檢查interrupted標誌,並且IO請求需要使用允許阻止呼叫被中斷的API來完成。這並不簡單...