Java AD睡眠时的CPU消耗
我有一个系统,我有多个线程运行(少于10),不断检查,如果一个新的电子邮件地址已收到。当收件箱中每隔5秒没有消息时,代码将休眠,并在循环中检查任何新消息。在代码运行了很长一段时间(几个小时或一天)后,我的CPU利用率达到了100%,即使电子邮件的收件箱中没有消息。我正在使用Javax.mail连接gmail 我已经尝试减少线程的数量,增加等待时间等Java AD睡眠时的CPU消耗,java,multithreading,jakarta-mail,cpu-usage,Java,Multithreading,Jakarta Mail,Cpu Usage,我有一个系统,我有多个线程运行(少于10),不断检查,如果一个新的电子邮件地址已收到。当收件箱中每隔5秒没有消息时,代码将休眠,并在循环中检查任何新消息。在代码运行了很长一段时间(几个小时或一天)后,我的CPU利用率达到了100%,即使电子邮件的收件箱中没有消息。我正在使用Javax.mail连接gmail 我已经尝试减少线程的数量,增加等待时间等 while (!this.isThreadInterrupt) { if (this.getMessageCount() > 0) {
while (!this.isThreadInterrupt) {
if (this.getMessageCount() > 0) {
//do something
} else {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
提前感谢您的帮助转储线程,查看正在运行的内容,而不是阻塞或休眠。如果你正在使用线程中断,你需要清除中断状态,否则它会“粘住”。我没有使用线程中断,我认为线程转储没有问题well@d_void请发布
this.getMessageCount()的内容。this.isThreadInterrupt
是否声明为易失性?进行线程转储,查看哪些线程正在运行,哪些线程未被阻止或休眠。如果你正在使用线程中断,你需要清除中断状态,否则它会“粘住”。我没有使用线程中断,我认为线程转储没有问题well@d_void请发布this.getMessageCount()的内容。this.isThreadInterrupt
是否声明为易失性?