timer = new Timer();
TimerTask timerTask=new TimerTask() {
public void run() {
if (flag == 0) {
timer.cancel();
}
ltips.setText("定时任务执行中..");
String originFile=originfile.getText();
String checkAddress=checkaddress.getText();
String preservAddress=preservaddress.getText();
CscsTool cst=new CscsTool();
String result=cst.readAndsticky(originFile, checkAddress,
preservAddress);
ltips.setText(result);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ltips.setText("等待执行任务中..");
}
};
timer.scheduleAtFixedRate(timerTask, time, PERIOD_DAY);
写个flag变量,定时器Timer,每次方法执行之前,判断下这个flag,
您说的这个方法我这里有,
但是如果定时器正在执行,
此时点击关闭,
但它的线程还是在运行,
无法立即结束,
只有等线程运行完成后,
才会结束。
@青棠: 那试着使用后台线程,主线程退出,后台线程会强制退出
@大志若愚: 怎么找到这个程序的主线程,用system.exit会使整个程序退出。
@青棠: 理论上是你点击关闭的那个程序,关闭的就是主线程
@大志若愚: 但是我不想关闭程序,所以就比较难搞。
@青棠: 启动线程的时候,拿到线程ID,想杀死的时候,杀死指定线程ID即可
参考:https://blog.csdn.net/ywq1016243402/article/details/86669574
@大志若愚: 嗯嗯,
好的,
我试一试。
谢谢您!