Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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中多次向executor服务提交同一(Runnable)命令_Java - Fatal编程技术网

在Java中多次向executor服务提交同一(Runnable)命令

在Java中多次向executor服务提交同一(Runnable)命令,java,Java,我想使用Java中的executor服务以并行方式调度相同的命令。我在线程池执行器上编写了一个包装器,它将并行计数作为参数来调度命令,并在for循环中调度命令(即多次调度同一实例) 这种方法正确吗?有没有什么建议的方法?我正在使用spring创建这些bean 您可以按如下方式使用: import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.uti

我想使用Java中的executor服务以并行方式调度相同的命令。我在线程池执行器上编写了一个包装器,它将并行计数作为参数来调度命令,并在for循环中调度命令(即多次调度同一实例)

这种方法正确吗?有没有什么建议的方法?我正在使用spring创建这些bean

您可以按如下方式使用:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorTest {

    private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    public static void main(final String[] args) throws InterruptedException {
        scheduler.scheduleAtFixedRate(new Runnable() {
            public void run() {
                System.out.println("executed");
            }
        }, 0, 1, TimeUnit.SECONDS);


        Thread.sleep(10000);
        scheduler.shutdownNow();
    }

}
这将立即开始每秒执行
run
方法

使用此方法,您可以将其多次添加到
scheduledExecuterService

Runnable command = new Runnable() {
    public void run() {
        System.out.println("executed");
    }
};
scheduler.scheduleAtFixedRate(command, 0, 1, TimeUnit.SECONDS);
scheduler.scheduleAtFixedRate(command, 0, 1, TimeUnit.SECONDS);

为什么不使用
ScheduledExecutorService
?检查“scheduleAtFixedRate”和“scheduleWithFixedDelay”方法。我正在使用定时执行器服务并以固定速率进行调度。但是,我不希望调度一个命令,而是希望它以并行方式调度。例如,它应该在1秒运行5次,在2秒运行5次,在3秒运行5次,而不是在1秒运行一次,在2秒运行一次。我已经实现了runnable接口,这就是我希望以并行方式调度的命令。上面的实现只调度同一个命令的一个实例。与其计划一个命令,我希望它以并行方式计划,例如,它应该在1秒运行5次,在2秒运行5次,在3秒运行5次,而不是在1秒运行一次,在2秒运行一次。你可以使用我现在添加的方法。你建议的方法正是我正在做的!只是想验证这是否正确。