Java AD睡眠时的CPU消耗

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) {

我有一个系统,我有多个线程运行(少于10),不断检查,如果一个新的电子邮件地址已收到。当收件箱中每隔5秒没有消息时,代码将休眠,并在循环中检查任何新消息。在代码运行了很长一段时间(几个小时或一天)后,我的CPU利用率达到了100%,即使电子邮件的收件箱中没有消息。我正在使用Javax.mail连接gmail

我已经尝试减少线程的数量,增加等待时间等

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
是否声明为易失性?