3

当涉及到 Java 领域的多线程和并发时,共识是将您想要多线程的代码隔离为“任务”,并将该任务提交给某种执行程序服务或线程池。

我想知道的是:

  • 任务可以是任何对象的任何方法,还是必须是特殊的(如果是,是什么)?
  • 您如何确定此任务是否受 CPU、IO 限制或其他限制?什么是“死的赠品”或其他决定因素?

在此先感谢您的澄清!

4

3 回答 3

2

看看ExecutorService

  • submit(Callable)
  • submit(Runnable)

您的任务可能应该是两个接口之一(始终可以调用其他方法)。

如果您在其中执行任何输入/输出操作,您的任务可能是 IO 绑定的:IE、读取文件、写入文件、从套接字读取、写入套接字等。

于 2012-05-02T00:38:22.540 回答
0

Threads通常执行他们在实现Runnable.

于 2012-05-02T00:32:48.157 回答
0

任务可以是任何对象的任何方法,还是必须是特殊的(如果是,是什么)?

它可以是任何东西。最大的问题是您的任务可能会包含一些与其他线程共享的对象。您必须确保对这些对象的访问是线程安全的。这是一个复杂的话题;Goetz 等人的“Java Concurrency in Practice”是一本非常好的书。

于 2012-05-02T01:01:48.163 回答