我在java web部署中使用以下代码作为调度程序
public class ReportScheduler implements ServletContextListener {
private ScheduledExecutorService scheduler;
@Override
public void contextInitialized(ServletContextEvent sce) {
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new ReportLoader(sce.getServletContext()), 0, 10, TimeUnit.SECONDS);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
scheduler.shutdownNow();
}
实现runnable的ReportLoader类如下:
public class ReportLoader implements Runnable {
ServletContext context;
public ReportLoader(ServletContext context) {
System.out.println("1");
this.context = context;
StartUp();
}
private void StartUp() {
System.out.println("start");
(new Thread(this)).start();
}
@Override
public void run() {
System.out.println("scheduled");
try {
//Files.delete(path);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
但我的调度程序似乎没有工作,因为没有任何东西被打印在tomcat(这是我的服务器)日志上,正如人们所期望的那样。
我是否有任何错误,或者我需要确保的更多错误,以便调度程序正常工作?
调度程序的目的是在本地PC上定期删除文件夹。
答案 0 :(得分:-1)
为什么要使用threadpool来运行Thread 你的代码:
private void StartUp() {
System.out.println("start");
(new Thread(this)).start();
}