在Struts2应用程序上动态创建线程

时间:2013-11-01 02:21:18

标签: java multithreading java-ee struts2

我正在研究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问题,还是会被垃圾收集器自动销毁。

2 个答案:

答案 0 :(得分:0)

线程运行完毕后,可以进行垃圾回收(如果没有对Thread对象的引用)。正在运行的Thread无法进行垃圾回收。

请参阅Java Thread Garbage collected or not

答案 1 :(得分:0)

值得阅读this相关问题。在Java EE应用程序服务器中运行应用程序时,需要谨慎管理线程。建议您不要启动并尝试销毁应用程序代码中的线程。