我需要一个非常简单的过程来监听目录,
在该目录上创建新文件时,将执行一些操作。

我想我需要一个做到这一点的线程池。

使用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;
}
}

09-30 23:01