4.9w+
社区成员
Timer timer = new Timer(); //设定计时器,执行时同步判断
timer.schedule(new ConnectTask(), 0, 180000); //180s循环,即超过180秒,断开连接,他是循环的这可行?
boolean finished = true;
int count = 0;
try {
while (finished) {
count++;
new Thread(new ConnectTask()).sleep(1000); //每1秒判断一次执行完成没有
if (timeflag == 1) {
finished = false;
// timer.cancel();
break;
}
if(count > 180){
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
disconnect();
timer.cancel();
}
public class ConnectTask extends TimerTask { //执行命令时,定义一个计时器,判断执行时间
public void run() {
try {
JudgeAccess();
} catch (Exception e) {
e.printStackTrace();
}
timeflag = 1;
}
}
private int timeflag = 0;
public TimerTest() {
}
public static void main(String[] args) {
TimerTest timertest = new TimerTest();
timertest.execute();
}
public void execute(){
Timer timer = new Timer(false); //设定计时器
timer.schedule(new StopTask(), new Date(System.currentTimeMillis() + 5000));
ConnectTask();
if(timeflag==1){
System.out.println("程序已经执行完成,直接退出");
// timer.cancel();
System.exit(0);
}
}
public void ConnectTask(){//当前要执行的任务
System.out.println("进入要执行的任务");
//加入这个用于测试当执行超过5s是否能够退出
// try {
// new Thread().sleep(6000);
// } catch (Exception e) {
// }
timeflag = 1;
}
public class StopTask extends TimerTask { //执行停止任务
public void run() {
try {
System.out.println("超时,任务终止");
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Timer timer = new Timer(false);
//从现在开始延迟180000ms,执行StopTask
timer.schedule(new StopTask(), new Date(System.currentTimeMillis() + 180000));