[英]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.