我正在寻求有关一般方法的帮助。

我已经编写了一些Java代码来检查buttonclick上我的邮箱中是否有未读邮件。

现在,我希望此代码永久在后台运行,并每2分钟检查一次我的邮箱。

馊主意:

while(true)
{
checkMails();
Thread.sleep(120000);
}

图形界面的其余部分显然死机了,所以我想必须在线程上进行一些魔术。

如何实现呢?

最佳答案

要么使用 javax.swing.Timer ,要么使用 SwingWorker ,尽管在这种情况下后者有点过大。

如果此任务没有修改任何Swing组件,那么为什么不这样产生一个单独的线程呢?

Thread t = new Thread(new Runnable(){
    @Override
    public void run(){
        while(!Thread.currentThread().isInterrupted()){
            //do stuff

            try{
                Thread.sleep(120000);
            }catch(InterruptedException e){
                Thread.currentThread().interrupt();
            }
        }
    }
});
t.start();

重要的是要注意,您可能需要使用boolean来确保仅创建一次线程,因为每次单击按钮都可能会产生一个新线程,这可能不是您想要的。

09-10 08:42
查看更多