线程停止后是否存在线程执行期间创建的任何对象?

时间:2012-03-27 06:56:21

标签: java multithreading object

我在一个窗口中有一个JButton“MAIN_BUTTON”。单击它时,每次都会启动新主题

新创建的线程依次调用另一个类的方法,该类显示新的“child_window”* (使用构造函数并创建它的对象) ) *。这个窗口上有两个按钮“accept”和“reject”。当按下任何这些按钮时,就会完成一些工作并关闭此窗口。

现在我想知道在停止线程后“CHILD_WINDOW”对象是被破坏还是它仍然存在于内存中。

2 个答案:

答案 0 :(得分:2)

  

现在我想在停止线程后知道“CHILD_WINDOW”对象是否被销毁或者它是否仍然存在于内存中。

在一般情况下,答案取决于线程对对象的引用所做的操作。如果它把它放在某个意味着它“可达”的地方,那么该对象仍然存在。如果没有,它可能会停止存在,这取决于GC是否以及何时收集它。

我不完全确定在Window对象的情况下会发生什么。我怀疑在图形上下文(或其他)中可能存在对该对象的一些引用,这意味着Window将保持可达,直到某些应用程序级代码明确关闭或处置它。 (否则,你会听到Swing窗口随机消失的故事......由于被垃圾收集器收回。)

答案 1 :(得分:1)

你停止线程所有对象仍在内存中(如果你仍然有引用)。线程对象被破坏。使用dispose()方法Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children.