我需要一个非常简单的过程来监听目录,
在该目录上创建新文件时,将执行一些操作。
我想我需要一个做到这一点的线程池。
使用spring框架非常容易实现,我通常会使用它,但是现在不能使用。
我只能使用tomcat,如何实现呢? “启动”该线程的切入点是什么?
它必须是一个servlet吗?
谢谢
最佳答案
既然您已经完善了这个问题,那么这里就有另一个答案:如何在tomcat中启动守护程序:
首先,在web.xml中注册您的守护程序:
my.package.servlet.Daemons
侦听器>
然后将Daemons类实现为ServletContextListener
的实现,如下所示:
该代码将每5秒调用一次,tomcat将在您的应用关闭时调用contextDestroyed。请注意,该变量是 Volatile 的,否则您可能无法在多核系统上关机
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class Daemons implements ServletContextListener {
private volatile boolean active = true;
Runnable myDeamon = new Runnable() {
public void run() {
while (active) {
try {
System.out.println("checking changed files...");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
public void contextInitialized(ServletContextEvent servletContextEvent) {
new Thread(myDeamon).start();
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
active = false;
}
}