我正在寻求有关一般方法的帮助。
我已经编写了一些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
来确保仅创建一次线程,因为每次单击按钮都可能会产生一个新线程,这可能不是您想要的。