我正在研究struts 2框架。我有一个要求,当用户点击特定网址时,我需要启用一项功能,并在几分钟后必须禁用相同的进程。当点击网址时,所有这些都将在后台运行。所以我决定选择Threads吧。以下是我正在使用的代码...
public class ActDeactTrace extends Thread {
@Override
public void run() {
System.out.println("RUNNING THREAD...BEFORE SLEEP");
enableTrace();
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("RESUMED THREAD .... AFTER WAKE UP");
disableTrace();
super.run();
}
public void enableTrace(){
}
public void disableTrace(){
}
}
当从用户调用动作时,我只需通过其对象启动Thread。由于它是一个Web应用程序,许多用户也可以这样做。因此,在执行 disableTrace 方法之后,我应该手动销毁创建的线程,以避免JVM问题,还是会被垃圾收集器自动销毁。
答案 0 :(得分:0)
线程运行完毕后,可以进行垃圾回收(如果没有对Thread
对象的引用)。正在运行的Thread
无法进行垃圾回收。
答案 1 :(得分:0)
值得阅读this相关问题。在Java EE应用程序服务器中运行应用程序时,需要谨慎管理线程。建议您不要启动并尝试销毁应用程序代码中的线程。