我有一个 JButton 来调用我的线程。但我真正想做的是在一分钟后停止线程! 我的 actionListener 方法是:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
new Frame2().setVisible(true);
Thread t=new Thread(new Frame2());
t.start();
}
我的线程只运行一分钟如下:
public void run(){
int i;
while(!Thread.currentThread().isInterrupted()){
for(i=0;i<=100;i++){
if(i==100){
Thread.currentThread().interrupt();
}
try {
Thread.currentThread().sleep(600);
} catch (InterruptedException ex) {
System.out.print("THREAD CLOSED");
return;
}
}
System.out.print("DOING THINGS BLA BLA");
}
}
问题: 一分钟后我成功地停止了线程,但我无法做任何想要的事情。我只是想知道我怎样才能实现这一点,以便只运行线程一分钟,并且在线程中我想做我的事情!但是怎么办?这种方法我错了吗?如果是,那么正确的方法应该是什么?
最佳答案
做你想做的事情的最简单方法是拥有如下内容:
public void run() {
long startTime = System.currentTimeMillis();
while (System.currentTimeMillis() < startTime + 60000) {
// do something useful
}
}
“do something useful”应该是一个快速的操作,你的线程总是会持续略长于1分钟(1分钟+“do something useful”的时间)。
请注意您的原始代码:要从线程本身停止线程,不需要中断:您只需从 run()
方法返回即可。
关于java - 一分钟后立即停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455765/