我可以依赖Java的垃圾收集(Groovy)多少钱?

Vam*_*ani 2 java groovy garbage-collection

我在Swing应用程序中有一个状态栏,可以连续打印状态.应用程序中的所有对象和类都将使用此setStatus方法绘制状态栏

public def setStatus(statusText){       
        Thread.start {
             ljaStatusBarButton.setText("Status : $statusText . . . .")
             sleep(3000)
             ljaStatusBarButton.setText("Status : Waiting for user action . . . .")
                     interrupt() // or stop() ?  
        }
    }
Run Code Online (Sandbox Code Playgroud)

状态栏将显示状态3秒,并恢复为等待用户操作的状态.

这确实可以正常工作,但我担心的是上面的方法将从UI多次调用,这也意味着每次设置状态时都会创建一个新的Thread对象.记住这一点,我最后明确地添加了一个interrupt(),因为我想指示编译器我不再需要这个线程了.而且,我可以在Java的垃圾收集上下注多少,以确保很快就能清除已停止/中断的线程?或者这个多线程对象问题有更好的解决方法吗?

Joa*_*uer 5

你不需要interrupt().

在Java中,线程在run()方法完成时结束(通常通过返回或异常抛出异常).

这意味着只要setText()执行第二次调用,它Thread就会停止运行.由于没有其他任何东西引用Thread创建的对象,它迟早会被垃圾收集.