【发布时间】:2012-05-02 00:31:02
【问题描述】:
当谈到 Java 领域的多线程和并发时,共识是将您想要多线程的代码隔离为“任务”,并将该任务提交给某种执行器服务或线程池。
我想知道的是:
- 任务可以是 any 对象的 any 方法,还是必须是特殊的东西(如果是,是什么)?
- 您如何确定此任务是否受 CPU、IO 限制或其他限制?有哪些“致命的赠品”或其他决定因素?
在此先感谢您的澄清!
【问题讨论】:
-
确定代码是 io 还是 cpu 绑定的方法是在分析器中运行它。其他任何事情都只是猜测,通常是错误的。
-
@jtahlborn - 好吧,如果任务包含 DNS 查找,然后从网站下载,那确实提供了一个线索,表明它将是 I/O 绑定的。这不是猜测;)
-
@MartinJames - 仍然是一个猜测。可能是从同一局域网上的另一台计算机下载(或一个非常小的文件),然后对结果进行一些疯狂的计算。
标签: java multithreading concurrency