如何在固定线程池中运行任务

时间:2020-03-07 22:37:13

标签: java parallel-processing threadpoolexecutor

我正在编写一个网络模拟器,我希望所有路由器的路由方法都可以并行运行。我有一个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() );
  }

0 个答案:

没有答案