這是我在Stackoverflow上的第一篇文章,顯然我沒有太多有關線程的知識。 它的控制檯應用程序和事情是,當主要方法啓動時,也啓動計時器和我的程序執行,它涉及從鍵盤獲取信息,它的工作很好。在定時器到期後調用並啓動一個新線程
計時器到期後,讓我們說20秒後,它從RemindTask類調用run(),並顯示我在那段時間收集的點數。 現在,我想使選項開始或不再啓動我的應用程序,主要方法。
東西是我的主要還是從鍵盤收集信息導致其仍然執行,而不是從我想要的run()方法輸入。 如果我把System.exit(0),當然我不能啓動一個新的線程後。 我如何獲得通過這個,有沒有辦法在我的while循環說「直到我的計時器沒有過期做到這一點」?或者其他的東西?
static class RemindTask extends TimerTask {
public void run() {
char answer;
System.out.println("Time expired! "+yourResult);
/* System.exit(0);
Thread t = new Thread();
t.start(); */
System.out.println("Do you continue? y/n");
Scanner in = new Scanner(System.in);
answer = in.nextLine().charAt(0);
if(answer=='y'){
System.out.println("Continue program");
String[] args = {};
Main.main(args);
}else
System.out.println("Stoping program");
System.exit(0); //Stops the AWT thread (and everything else)
}
}
static int yourResult;
public static void main(String[] args) {
int seconds=20;
timer = new Timer();
timer.schedule(new RemindTask(), seconds * 1000);
boolean contin = true;
while(contin == true){
//...a bunch of code...
//...Scanner in = new Scanner(System.in);..
//...a bunch of code...
}
謝謝,我會在稍後嘗試,但有沒有辦法做到這一點,因爲它看起來像是一個簡單的任務:「在計時器到期後再次通過鍵盤輸入重新啓動程序」而不是在玩線程? 我不能看到它的方式。 沒有鍵盤輸入'y'很簡單,它只是在_System.out.println(「Time expired!」+ yourResult)之後再次調用main; _但是用這個輸入的東西確實是一個討厭的東西。 – Neonlight 2014-10-17 17:44:14
_「你在主線程中調用Thread.interrupt(),然後在主線程中......」_ - 你是不是指生成的/其他線程或類似的東西? – Blogueira 2015-08-10 18:15:46
@DanielGomes不,它的意思是它寫的,儘管我可以寫得更清楚。我已經重新配製了一下。 – Hoopje 2015-08-10 20:22:14