简而言之:在线程内部生成线程是一个标准过程吗?或者如果可能的话,应该避免这样做吗?
举个例子:想象一个并行的爬行器一次检索和解析多个文档。在我的推理中,有问题的爬行器需要两个线程(FetcherPool,ParserPool)来产生获取器和解析器工作线程,以便使所有工作都同时进行(见下文)。
示例:
Main Thread
|------FetcherPool
| |------Fetcher
| |------Fetcher
|
|------ParserPool
|------Parser
|------Parser 干杯
发布于 2011-07-20 22:59:36
不--因为你不能从其他任何东西中产生一个线程。你在脚本中产生的第一个线程是从"main“线程产生的。如果你在一个非多线程的应用程序中执行"Thread.current“,你会得到这个主线程。"Thread.main“也会返回它。
但如果你的问题是关于从"main“以外的线程产生,我也不认为这有什么本质上的坏处。为了你自己(或你的团队)的理智,你应该设计线程管理,这样工作者就不会失控(例如,产生比你预期更多的东西)。还应该考虑代码的可读性和对共享资源的访问控制。
这里有一篇关于多线程问题的有趣文章:http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf
通常,将线程封装到对象中并只调用这些对象上的方法是一个好主意。这使得代码更容易理解。
https://stackoverflow.com/questions/6763666
复制相似问题