【发布时间】:2012-07-01 20:22:45
【问题描述】:
我正在阅读 Brian Goetz 的 this article。在不要从构造函数中启动线程部分下,他说“清单 4 中问题的一个特例是从构造函数中启动线程,因为通常当一个对象拥有一个线程时,要么thread 是一个内部类,或者我们将 this 引用传递给它的构造函数(或者类本身扩展了 Thread 类)。如果一个对象要拥有一个线程,最好是该对象提供一个 start() 方法,就像线程确实如此,并且从 start() 方法而不是从构造函数启动线程。” 他所说的“通常当一个对象拥有一个线程”是什么意思?
【问题讨论】:
-
你的背景是什么?它可能是任何一种方式。
-
如果你引用Thread类的实例,它也可以是一个对象。
-
@Jeffrey 我正在阅读 Brian Goetz ibm.com/developerworks/java/library/j-jtp0618/index.html#code4 的这篇文章,在阅读“不要从构造函数中启动线程”部分时,我对对象如何拥有线程有点困惑.我认为这是相反的方式。
-
线程并不完全由对象拥有。它们或多或少由产生它们的过程所拥有。您可以生成线程并维护线程的句柄,这可能被认为是一个对象,但它并不完全拥有线程,因为它更多的是一个引用。然而,正如杰弗里所说,这在很大程度上是由上下文决定的。您有具体的示例代码吗?
-
-1;标题没有说明一切……太模糊了。有参考吗?
标签: java multithreading synchronization synchronized