java.lang.IllegalStateException : Timer already cancelled even when i am creating a new instance of the class itself 错误

标签 java timer illegalstateexception

问题陈述:我有一个包含计时器的类。

class DeleteTimer {

    private Timer timer = new Timer();

    private static Timer timerStatic;

    public DeleteTimer(Member uid, String serverFilePath, String deleteTime) {

    }

    public static void start() {
        timerStatic.schedule(new TimerTask() {
            public void run() {
                deleteFolder();
                try {
                    timerStatic.cancel();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            private void deleteFolder() {
                //delete a folder
               return true;
            }
        }, 10000);
    }

}

我有一个创建一些文件夹的程序,我希望这些文件夹在一段时间后自动删除。文件夹的名称不是固定的,因此每次我调用这个类时,我都会为它创建一个新对象。

DeleteTimer obj = new DeleteTimer();
obj.start();

这在第一次尝试时工作正常,但在我尝试使用新对象运行它时出现 java.lang.IllegalStateException: Timer already cancelled。请帮忙。

最佳答案

timerStatic 被声明为 static,这意味着 DeleteTimer 的所有实例共享相同的 timerStatic 实例。

如果您在 start 方法和 timerStatic 上删除 static 修饰符,这将阻止您的类的不同实例相互干扰.

关于java.lang.IllegalStateException : Timer already cancelled even when i am creating a new instance of the class itself 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7176096/

相关文章:

java - JDOM 2.0 中的 XPath 2.0 功能

java - 检查异常是否违反开闭原则?

JavaFX 容器可拖动

javascript - 多个 JavaScript 超时 - 实时数据获取问题

ajax - java.lang.IllegalStateException:CDATA标记可能不嵌套

java - 在递归迭代时从列表中删除元素会引发异常

php - 我怎样才能有效地让我的脚本休眠准确的毫秒数?

c# - 执行时间超过跨度时的计时器行为?

Android:在 unregisterReceiver() 上获取 java.lang.IllegalArgumentException

android - 应用程序在 Android 10 上崩溃?