vir*_*wee 3 java multithreading
这是我的代码
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());
}
}
Run Code Online (Sandbox Code Playgroud)
对此
“线程.睡眠(5 * 60 * 1000);”
代码检查员发出警告
“在循环中调用 Thread.sleep 可能会导致性能问题”
应该使用什么代码来防止出现此警告
在 1.8 中,您还可以使用:
import java.util.concurrent.locks.LockSupport;
LockSupport.parkNanos(TimeUnit.MILLISECONDS.toNanos(1000));
Run Code Online (Sandbox Code Playgroud)
根据 Javadoc:
出于线程调度目的禁用当前线程,直到指定的等待时间,除非许可可用。
好的部分是,它的签名不会抛出检查异常。所以你不必尝试捕获(不像Thread.sleep,它需要处理它的InterruptedException)。当然,每种都有其自己的适用用途。