销毁当前的类对象并通过线程运行相同的类

时间:2013-03-18 08:42:44

标签: java multithreading swing

我正在调用一个线程,我再次调用同一个类

TrafficMainGUI traffic=new TrafficMainGUI(storeValue);
traffic.setVisible(true);

但我希望以前的类对象能够被破坏。我怎么能实现这个目标。

由于TrafficMainGUI是一个jFrame对象。请帮助??

3 个答案:

答案 0 :(得分:2)

要正确销毁JFrame,您应该dispose

previousTraffic.dispose();
TrafficMainGUI traffic=new TrafficMainGUI(storeValue);
traffic.setVisible(true);

来自文档:

Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children. That is, the resources for these Components will be destroyed, any memory they consume will be returned to the OS, and they will be marked as undisplayable.

您对线程的处理方式非常模糊。 正如@MadProgrammer所提到的,当您使用swing时,您应该考虑EDT。但要获得更具体的帮助,您应该提供sscce

答案 1 :(得分:0)

添加以下代码:

traffic = new TrafficMainGUI(newValues);

流量将由新的Object分配,而前一个对象将被替换,因为new函数是请求内存中的新对象。

答案 2 :(得分:0)

要使你的框架消失,只需致电

traffic.setVisible(true);

但是,这不会删除您创建的TrafficMainGUI实例。由于java具有自动垃圾收集功能,因此当无法访问引用它的所有引用时,此对象将在某个时间点自动删除。例如,如果您的变量traffic在方法范围内定义,则一旦您的代码退出方法,它就会过时。如果没有,你可以说traffic = null;。这将删除引用。

然而,您应该注意GC(垃圾收集器)过着自己的生活,可以决定何时删除您的对象。它可以决定不永远删除它。但你不应该关心它。