小渣飞、
2020-12-26 20:15
采纳率: 93.8%
浏览 16
已结题

请问这段代码如何在 JavaWeb 项目运行时自动运行?

这段代码主要是每隔三分钟删除一个文本文件,请问如何在服务器运行时自动运行它?

 

public class DocumentQueue extends Thread{

    public static final HashMap<File, Long> DATA_MAP = new HashMap<>();
    private static final long THRESHOLD = 180000;

    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        while (true){
            if (!DATA_MAP.isEmpty()){
                Set<File> keys = DATA_MAP.keySet();
                long createTime = System.currentTimeMillis();
                for (File key : keys) {
                    if (createTime - DATA_MAP.get(key) > THRESHOLD){
                        if (key.exists() && key.isFile()){
                            if (key.delete()) {
                                DATA_MAP.remove(key);
                            }
                        }
                    }
                }
            }
            try {
                sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
  • 好问题 提建议
  • 收藏

3条回答 默认 最新

  • 小渣飞、 2020-12-29 15:36
    已采纳

    嗯嗯,感谢回答,我已经使用了HttpServlet 类中的 init(); 方法,在 Servlet 启动后会调用它一次,这个已经解决了。最后一点其实是我这个代码是有问题的,在增强 for 哪里应该使用迭代器不然会报错

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Iot-Mr.Qu 2020-12-27 09:32

    建议你采用定时任务执行;springboot整合狠简单的,最后只需要在方法名加注解-》 cron表达式

    评论
    解决 无用
    打赏 举报
  • 流光Wyatt 2020-12-28 08:49

    加定时器啊,定时器指定时间并调用该删除方法

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题