如何在java中停止计时器
我有一个计时器方法,每次用户输入东西时都会运行。基本上,用户有一分钟的时间输入某些内容,或者计时器将打印响应,但如果用户在计时器超时之前输入某些内容,则不会打印响应。基本上,我很难取消最后一个计时器并调用一个新的计时器,因为如果我不取消计时器,前一个计时器会一直运行,而新的计时器会一直被调用,所以会造成很大的混乱。我的方法如下 主要内容: 跑步者:如何在java中停止计时器,java,timer,Java,Timer,我有一个计时器方法,每次用户输入东西时都会运行。基本上,用户有一分钟的时间输入某些内容,或者计时器将打印响应,但如果用户在计时器超时之前输入某些内容,则不会打印响应。基本上,我很难取消最后一个计时器并调用一个新的计时器,因为如果我不取消计时器,前一个计时器会一直运行,而新的计时器会一直被调用,所以会造成很大的混乱。我的方法如下 主要内容: 跑步者: public static void runner() { timer(); String s = input.nextLine
public static void runner() {
timer();
String s = input.nextLine();
System.out.println(s);
}
计时器:
public static void timer() {
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Say something already!");
}
};
long delay = TimeUnit.MINUTES.toMillis(1);
Timer t = new Timer();
t.schedule(task, delay);
}
我怎样才能取消这次旅行呢。有人要我在TimerTask类中使用cancel()方法,但我不知道在哪里调用,甚至不知道如何调用。让timer()方法返回TimerTask对象,当input.nextLine()返回时,调用TimerTask.cancel()
也可以返回计时器,并调用Timer.cancel()让Timer()方法返回TimerTask对象,当input.nextLine()返回时,调用TimerTask.cancel()
也可以返回计时器并调用Timer.cancel()我想这可能会起作用:
Main:
TimerTask task;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
runner();
while(true) {
timer(); //run timer
String line = scan.nextLine(); //read line (happens after hit Enter)
System.out.println(line);
//if line is read, then rerun timer which has on next iteration
}
}
Timer:
public static void timer() {
if(null != task) {
task.cancel();
}
task = new TimerTask() {
public void run() {
System.out.println("Say something already!");
//timer(); reinit maybe after 1 min again?
}
};
long delay = TimeUnit.MINUTES.toMillis(1);
Timer t = new Timer();
t.schedule(task, delay);
}
我想这是可行的:
Main:
TimerTask task;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
runner();
while(true) {
timer(); //run timer
String line = scan.nextLine(); //read line (happens after hit Enter)
System.out.println(line);
//if line is read, then rerun timer which has on next iteration
}
}
Timer:
public static void timer() {
if(null != task) {
task.cancel();
}
task = new TimerTask() {
public void run() {
System.out.println("Say something already!");
//timer(); reinit maybe after 1 min again?
}
};
long delay = TimeUnit.MINUTES.toMillis(1);
Timer t = new Timer();
t.schedule(task, delay);
}
由于返回了一些内容,这不意味着我们不能使用void for timer()方法吗。那么,什么应该放在适当的位置而不是空的位置呢?是的,输入错误。timer的返回类型应为TimerTask(或timer),具体取决于返回的对象。由于返回了某些内容,这不意味着我们不能使用void for timer()方法。那么,什么应该放在适当的位置而不是空的位置呢?是的,输入错误。计时器的返回类型应为TimerTask(或timer),具体取决于返回的对象。
Main:
TimerTask task;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
runner();
while(true) {
timer(); //run timer
String line = scan.nextLine(); //read line (happens after hit Enter)
System.out.println(line);
//if line is read, then rerun timer which has on next iteration
}
}
Timer:
public static void timer() {
if(null != task) {
task.cancel();
}
task = new TimerTask() {
public void run() {
System.out.println("Say something already!");
//timer(); reinit maybe after 1 min again?
}
};
long delay = TimeUnit.MINUTES.toMillis(1);
Timer t = new Timer();
t.schedule(task, delay);
}