我有一个对象需要运行4个场景。我想在两个线程之间拆分(所以我可以发送到另一个服务器) 我得到了这个工作到2台服务器,但在尝试清理代码时我创建了这样的东西;
ExecutorService executor1 = Executors.newFixedThreadPool(1);
ExecutorService executor2 = Executors.newFixedThreadPool(1);
executor1.execute(userProvisioner1);
executor1.execute(userProvisioner2);
executor2.execute(userProvisioner3);
executor2.execute(userProvisioner4);
executor1.shutdown();
executor2.shutdown();
while (!executor1.isTerminated()&!executor2.isTerminated()) {
}
userProvisioner1
& userProvisioner2
需要按顺序运行(如3& 4所示),但可以相互并行运行。
这确实有效,但自从尝试一次使用2个池以来,我遇到了问题。这是游泳池或其他问题吗?
答案 0 :(得分:4)
如果您需要顺序活动,则可以调用一个任务,然后调用另一个任务。在你的情况下,简单的解决方案是这样的。
ExecutorService exec = Executors.newFixedThreadPool(2);
exec.execute(new Runnable() {
public void run() {
userProvisioner1.run();
userProvisioner2.run();
}
});
exec.execute(new Runnable() {
public void run() {
userProvisioner3.run();
userProvisioner4.run();
}
});
exec.shutdown();
exec.awaitTermination();