我想使用Java中的executor服务以并行方式安排相同的命令。我在线程池执行器上编写了一个包装器,它将并行计数作为参数调度命令,并在for循环中调度命令(即多次执行相同的实例)。
这种做法是否正确?有没有建议的方法这样做?我用spring来创建这些bean。
答案 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);