Я пишу симулятор сети и хочу, чтобы все методы маршрутизации маршрутизаторов работали параллельно. У меня есть ExecutorSercive типа fixedThreadpool. Идея состоит в том, чтобы l oop на маршрутизаторах отправить новую задачу службе для каждого маршрутизатора. По какой-то причине сервис, кажется, запускает только одну задачу. Я не уверен, если это проблема с тем, как я это называю. Я вижу других людей онлайн, использующих 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() );
}