Java 计时器任务只运行一次
如何使计时器任务多次运行?这真让我心烦Java 计时器任务只运行一次,java,sockets,timer,task,Java,Sockets,Timer,Task,如何使计时器任务多次运行?这真让我心烦 timer = new Timer(); timer.schedule(new Client(), 1000); public void run() { try { System.out.println("sent data"); socketOut.write(0); } catch (Exception e) { // disconnect cli
timer = new Timer();
timer.schedule(new Client(), 1000);
public void run() {
try {
System.out.println("sent data");
socketOut.write(0);
} catch (Exception e) {
// disconnect client on their side
Game.destroyGame();
timer.cancel();
timer.purge();
}
}
我希望这个计时器运行无限长的时间,直到异常发生。当Javadoc说它以特定的延迟重复时,延迟是
TimerTask
启动之前的初始延迟,而不是TimerTask
将运行多长时间。您可以每隔时间段
毫秒重复该任务。查看计划
方法。下面是一个简单的示例,每2秒重复一次,无限期地重复。在本例中,调用:
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
告诉计时器
每秒运行一次提醒任务
秒(*1000,因为这里的时间实际上是以毫秒为单位),初始延迟为0-即立即启动提醒任务
,然后定期重复
import java.util.Timer;
import java.util.TimerTask;
public class Main {
static Timer timer;
static int i = 0;
class RemindTask extends TimerTask {
private int seconds;
public RemindTask(int seconds) {
this.seconds = seconds;
}
public void run() {
i+= seconds ;
System.out.println(i + " seconds!");
}
}
public Main(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
}
public static void main(String args[]) {
new Main(2);
System.out.format("Task scheduled.%n");
}
}
当Javadoc说它以特定的延迟重复时,延迟是
TimerTask
启动之前的初始延迟,而不是TimerTask
将运行多长时间。您可以每隔时间段
毫秒重复该任务。查看计划
方法。下面是一个简单的示例,每2秒重复一次,无限期地重复。在本例中,调用:
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
告诉计时器
每秒运行一次提醒任务
秒(*1000,因为这里的时间实际上是以毫秒为单位),初始延迟为0-即立即启动提醒任务
,然后定期重复
import java.util.Timer;
import java.util.TimerTask;
public class Main {
static Timer timer;
static int i = 0;
class RemindTask extends TimerTask {
private int seconds;
public RemindTask(int seconds) {
this.seconds = seconds;
}
public void run() {
i+= seconds ;
System.out.println(i + " seconds!");
}
}
public Main(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
}
public static void main(String args[]) {
new Main(2);
System.out.format("Task scheduled.%n");
}
}
当Javadoc说它以特定的延迟重复时,延迟是
TimerTask
启动之前的初始延迟,而不是TimerTask
将运行多长时间。您可以每隔时间段
毫秒重复该任务。查看计划
方法。下面是一个简单的示例,每2秒重复一次,无限期地重复。在本例中,调用:
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
告诉计时器
每秒运行一次提醒任务
秒(*1000,因为这里的时间实际上是以毫秒为单位),初始延迟为0-即立即启动提醒任务
,然后定期重复
import java.util.Timer;
import java.util.TimerTask;
public class Main {
static Timer timer;
static int i = 0;
class RemindTask extends TimerTask {
private int seconds;
public RemindTask(int seconds) {
this.seconds = seconds;
}
public void run() {
i+= seconds ;
System.out.println(i + " seconds!");
}
}
public Main(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
}
public static void main(String args[]) {
new Main(2);
System.out.format("Task scheduled.%n");
}
}
当Javadoc说它以特定的延迟重复时,延迟是
TimerTask
启动之前的初始延迟,而不是TimerTask
将运行多长时间。您可以每隔时间段
毫秒重复该任务。查看计划
方法。下面是一个简单的示例,每2秒重复一次,无限期地重复。在本例中,调用:
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
告诉计时器
每秒运行一次提醒任务
秒(*1000,因为这里的时间实际上是以毫秒为单位),初始延迟为0-即立即启动提醒任务
,然后定期重复
import java.util.Timer;
import java.util.TimerTask;
public class Main {
static Timer timer;
static int i = 0;
class RemindTask extends TimerTask {
private int seconds;
public RemindTask(int seconds) {
this.seconds = seconds;
}
public void run() {
i+= seconds ;
System.out.println(i + " seconds!");
}
}
public Main(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(seconds), 0, seconds * 1000);
}
public static void main(String args[]) {
new Main(2);
System.out.format("Task scheduled.%n");
}
}
在我看来,你正在运行一个GUI程序(我在假设SWING,因为你的另一个问题是你在使用SWING)。所以这里有一点建议。对swing程序使用
javax.swing.Timer
“如何使计时器任务多次运行?”
javax.swing.Timer
有方法.stop()
和.start()
和.restart()
。Timer
对象的基本实现如下
Timer timer = new Timer(delay, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
timer.start();
您可以在执行的操作中执行任何操作
,它将每隔多少毫秒向延迟
触发一个事件。您可以通过按钮调用.start()
或.stop()
有关
计时器的简单实现,请参阅模拟一种用于Boggle游戏的秒表在我看来,您运行的是GUI程序(我假设是SWING,因为您的另一个问题是使用SWING)。所以这里有一点建议。对swing程序使用javax.swing.Timer
“如何使计时器任务多次运行?”
javax.swing.Timer
有方法.stop()
和.start()
和.restart()
。Timer
对象的基本实现如下
Timer timer = new Timer(delay, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
timer.start();
您可以在执行的操作中执行任何操作
,它将每隔多少毫秒向延迟
触发一个事件。您可以通过按钮调用.start()
或.stop()
有关计时器的简单实现,请参阅模拟一种用于Boggle游戏的秒表在我看来,您运行的是GUI程序(我假设是SWING,因为您的另一个问题是使用SWING)。所以这里有一点建议。对swing程序使用javax.swing.Timer
“如何使计时器任务多次运行?”
javax.swing.Timer
有方法.stop()
和.start()
和.restart()
。Timer
对象的基本实现如下
Timer timer = new Timer(delay, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
timer.start();
您可以在执行的操作中执行任何操作
,它将每隔多少毫秒向延迟
触发一个事件。您可以通过按钮调用.start()
或.stop()
有关计时器的简单实现,请参阅模拟一种用于Boggle游戏的秒表在我看来,您运行的是GUI程序(我假设是SWING,因为您的另一个问题是使用SWING)。所以这里有一点建议。对swing程序使用javax.swing.Timer
“如何使计时器任务多次运行?”
javax.swing.Timer
有方法.stop()
和.start()
和.restart()
。Timer
对象的基本实现如下
Timer timer = new Timer(delay, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
});
timer.start();
你可以做任何你想做的事