Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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 如何每隔s秒调用一个方法_Java_Timer_Repeat - Fatal编程技术网

Java 如何每隔s秒调用一个方法

Java 如何每隔s秒调用一个方法,java,timer,repeat,Java,Timer,Repeat,我想调用一个现有的方法,它获取一个屏幕截图,并根据用户的输入每隔s秒执行一次 在不停止程序的情况下,如何做到这一点 编辑:我不想调用函数n次或s秒之后。相反,我希望每秒钟运行一次,而不会导致程序停止。根据您的描述,它可能与 根据你的头衔, 您可以使用递归多次调用它 int number=6;//根据用户输入可以是任何内容 调用方法(编号); //methid实现 无效调用方法(int n){ //做事 如果(n>0) { 方法(n-1); } } 根据您的描述,它可能与 根据你的头衔, 您可以使

我想调用一个现有的方法,它获取一个屏幕截图,并根据用户的输入每隔s秒执行一次

在不停止程序的情况下,如何做到这一点


编辑:我不想调用函数n次或s秒之后。相反,我希望每秒钟运行一次,而不会导致程序停止。

根据您的描述,它可能与

根据你的头衔, 您可以使用递归多次调用它

int number=6;//根据用户输入可以是任何内容
调用方法(编号);
//methid实现
无效调用方法(int n){
//做事
如果(n>0)
{
方法(n-1);
}
}

根据您的描述,它可能与

根据你的头衔, 您可以使用递归多次调用它

int number=6;//根据用户输入可以是任何内容
调用方法(编号);
//methid实现
无效调用方法(int n){
//做事
如果(n>0)
{
方法(n-1);
}
}
在这种情况下,请使用“计时器和计时器任务类”

在这种情况下,请使用“计时器和计时器任务类”


您可以创建一个方法,该方法将接收int(n秒),然后在Thread.sleep(n*1000)之后执行屏幕截图方法


您可以创建一个方法,该方法将接收int(n秒),然后在Thread.sleep(n*1000)之后执行屏幕截图方法


实际上,我想每n秒调用一次该方法。标题有点误导人,我的错。我已经更改了它。我实际上想每n秒调用一次该方法。标题有点误导人,我的错。我已经更改了。可能是重复的谢谢,但我的问题与您链接的问题不同。请检查编辑。可能重复谢谢,但我的问题与您链接的问题不同。请检查编辑。
import java.util.Timer;
import java.util.TimerTask;

/**
 * Simple demo that uses java.util.Timer to schedule a task 
 * to execute once 5 seconds have passed.
 */

public class Reminder {
    Timer timer;

    public Reminder(int seconds) {
        timer = new Timer();
        timer.schedule(new RemindTask(), seconds*1000);
    }

    class RemindTask extends TimerTask {
        public void run() {
            System.out.println("Time's up!");
            timer.cancel(); //Terminate the timer thread
        }
    }

    public static void main(String args[]) {
        new Reminder(5);
        System.out.println("Task scheduled.");
    }
}

........ The below answer was for the same question which was edited later on ........

In Java 8, You can do this to call a method n times:
But if you put it into a little helper function that takes a couple of parameters

IntStream.range(0, n).forEach(i -> doSomething());

void repeat(int count, Runnable action) {
    IntStream.range(0, count).forEach(i -> action.run());
}
This will enable you to do things like this:

repeat(3, () -> System.out.println("Hello!"));
and also this:

repeat(4, this::doSomething);

public void screenShotWithTimer(int n){
    while(true){
        takeScreenShot();
        try{
            Thread.sleep(n*1000);
        }catch(InterruptedException e){}
    }
}