在java中是否有Thread.sleep的替代品 [英] Is there a alternative to Thread.sleep in java

查看:2936
本文介绍了在java中是否有Thread.sleep的替代品的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码

while (true) {
    try {
        Thread.sleep(5 * 60 * 1000);
        processData();// data processing job
    } catch (InterruptedException e) {
        SystemMessageBillPay.getInstance().writeMessage("ERROR: CEB.run() - " + e.getMessage());
    } catch (NumberFormatException e) {
        SystemMessageBillPay.getInstance().writeMessage("ERROR: CEB.run() - " + e.getMessage());
    }
}

到此


Thread.sleep(5 * 60 * 1000);

"Thread.sleep(5 * 60 * 1000);"

代码检查员发出警告


在循环中调用Thread.sleep会导致性能问题

"Invoking Thread.sleep in loop can cause performance problems"

防止此警告的代码应该是什么

What should be the code to prevent this warning

推荐答案


Is there a alternative to Thread.sleep


是的,有办法。 但是

看起来你想安排一些工作。您可以使用 TimerTask ScheduledExecutorService 而不是此。所以后面的部分问题是关于

It looks like you want to schedule some job. You can either use TimerTask or ScheduledExecutorService instead of this. So later part of your question is about the


在循环中调用Thread.sleep会导致性能问题

"Invoking Thread.sleep in loop can cause performance problems"

这将通过安排任务来解决。

and this will solve with scheduling the task.

安排任务。

public class Test extends TimerTask{

public static void main(String[] args) {
  Test task = new Test();
  Timer timer = new Timer();
  Calendar today = Calendar.getInstance();
  today.set(Calendar.HOUR_OF_DAY, 13);
  today.set(Calendar.MINUTE, 47);
  today.set(Calendar.SECOND, 0);
  timer.schedule(task, today.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS));
}

 @Override
public void run() {
 System.out.println("Running Scheduled Task...!!!");
}
}

这篇关于在java中是否有Thread.sleep的替代品的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆