多次提交相同(Runnable)命令到Java中的executor服务

时间:2012-07-08 12:38:59

标签: java

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

这种做法是否正确?有没有建议的方法这样做?我用spring来创建这些bean。

1 个答案:

答案 0 :(得分:3)

您可以使用ScheduledExecuterService,如下所示:

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);