2009-11-21 138 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来完成。这并不简单...