Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计时器任务只运行一次_Java_Sockets_Timer_Task - Fatal编程技术网

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();
你可以做任何你想做的事