【发布时间】:2014-10-17 16:39:04
【问题描述】:
这是我在 Stackoverflow 上的第一篇文章,显然我对线程了解不多。 它是一个控制台应用程序,事情是,当 main 方法启动时,计时器也会启动并且我的程序执行,它涉及从键盘获取信息并且效果很好。
计时器到期后,假设 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...
}
【问题讨论】:
标签: java multithreading timer