繁体   English   中英

在 Java 中的特定时间后执行一段代码

[英]Execute a block of code after certain time in Java

我想在一段时间后在线程中执行一段代码。

在线程中:

public void run() {
    System.out.println("it is running");
    while (true) {
        if (System.currentTimeMillis() > lastEdit) {
            System.out.println("DELETE");
            timerStart(12000);
        }
    }
}

public static void timerStart(int time) {
    lastEdit = System.currentTimeMillis() + time;
}

在这段代码中,System.out.println("DELETE") 将在 12 秒后执行。 但是,我也会在另一个代码中调用 timeStart function,如下所示

anotherThread.timerStart(12000);

当我调用这个 function 时,我预计 lastEdit 将增加 12000 毫秒。 但是,它不起作用。 我可以知道为什么以及如何解决这个问题吗? 谢谢。

不确定我明白你真正想做什么,但改变你的run() function 让它大部分时间“睡觉”可能会提高你程序的性能:

public void run() {
    System.out.println("it is running");
    while(true) {
        long timeUntilDelete = lastEdit - System.currentTimeMillis();
        if (timeUntilDelete > 0) {
            try {
                Thread.sleep(timeUntilDelete);
            }
            catch(InterruptedException ex) {
                ...What you do here is up to you...
            }
            continue;
        }
        System.out.println("DELETE");
        timerStart(12000);
    }
}

您好,您可以使用ScheduledExecutorService ,看看 oracle 文档,您会找到一个示例,我相信可以解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM