Timer线程
请求大神帮我解答,我想让计算器启动后Timer线程自动结束,可是在不关闭计算器时timer不结束?import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
public class TestTimer {
class MyTimerTask extends TimerTask {
private Timer t ;
public MyTimerTask(Timer t) {
this.t = t;
}
public void run() {
try {
//启动计算器程序
Runtime.getRuntime().exec("calc.exe");
} catch (IOException e) {
e.printStackTrace();
}
//结束线程
t.cancel();
}
}
public static void main(String[] args) {
TestTimer tt = new TestTimer();
Timer t = new Timer();
//2秒后执行Timertask
t.schedule(tt.new MyTimerTask(t), 2000);
}
}
----------------解决方案--------------------------------------------------------
你的t.cancel 跟在exec后面 当然要 exec结束了 才会执行到
----------------解决方案--------------------------------------------------------
貌似我知道为什么了,我通过在命令行窗口运行程序,当调用cancle()的情况下程序在启动计算器后线程会结束,不调用时不会结束,我在eclipse下运行该程序,忽略了控制台下一直运行的是计算器,当计算器不结束,控制台也不会结束,我错以为程序也没结束,其实程序已经结束了
----------------解决方案--------------------------------------------------------