我正在尝试创建多个任务,每个任务都会在多个路由器上调用路由。我正在尝试将路由器的主列表(ArrayList)分解成子列表,每个线程都可以对其进行迭代。
将变量传递给线程的这种方式会引起问题吗?还是其他。
nbTasks
=可运行数量routersPerThread
=每个线程应在以下位置调用route()的路由器数量:
for (int i = 0; i < nbTasks; i++) {
final List<Router> routerList =
routers.subList(i * routersPerThread, (i + 1) * routersPerThread);
service.execute(new Runnable() {
@Override
public void run() {
for (Router r : routerList) {
r.route();
}
sem.release();
}
});
}
我正在尝试创建多个任务,每个任务都会在多个路由器上调用路由。我正在尝试将路由器的主列表(ArrayList)分解为子列表,每个线程可以迭代该子列表...
当线程仍在运行时,如果列表更改,您将遇到问题。在您显示的代码中不会发生这种情况,因此对于这一点,您应该没问题;例如,如果您在构造函数中创建列表,并且从不更改它。