我在 Swing 应用程序中有一个状态栏,可以连续打印状态。应用程序中的所有对象和类都将使用此 setStatus 方法来绘制状态栏
public def setStatus(statusText){
Thread.start {
ljaStatusBarButton.setText("Status : $statusText . . . .")
sleep(3000)
ljaStatusBarButton.setText("Status : Waiting for user action . . . .")
interrupt() // or stop() ?
}
}
状态栏将显示状态 3 秒,然后恢复为等待用户操作的状态。
这确实可以正常工作,但我担心的是,上面的方法将从 UI 中多次调用,这也意味着每次设置状态时都会创建一个新的 Thread 对象。请记住这一点,我在末尾显式添加了一个 interrupt()
,因为我想向编译器表明我不再需要该线程。而且,我可以在 Java 的垃圾收集上赌多少,以确保停止/中断的线程很快被清理掉?或者对于这个多线程对象问题有更好的解决方法吗?
最佳答案
您不需要interrupt()
。
在 Java 中,线程在 run()
方法完成时结束(通常通过返回,或者异常通过抛出异常)。
这意味着,一旦执行第二个 setText()
调用,Thread
将停止运行。由于没有其他任何东西引用创建的 Thread 对象,因此它迟早会被垃圾收集。
关于java - 我可以在多大程度上依赖 Java 的垃圾收集(Groovy)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979961/