我正在编写一个网络模拟器,我希望所有路由器的路由方法都可以并行运行。我有一个fixedThreadpool类型的ExecutorSercive。这个想法是环回路由器,为每个路由器向服务提交新任务。由于某种原因,该服务似乎仅启动一项任务。我不确定这是否是我所说的方式的问题。我看到其他人正在使用service.execute()。我才刚刚开始并行编程。预先谢谢你。
var clock = new SimpleClock();
network.setClock(clock);
var routers = network.allRouters();
do{
clock.step();
Semaphore routing = new Semaphore( 0 );
for( Router r : routers ){
service.execute(new Runnable() {
@Override
public void run() {
r.route();
routing.release();
}
});
try {
routing.acquire( routers.size() );
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}while( network.isActive() );
}