从外部类创建可运行的对象

问题描述 投票:-1回答:1

我正在尝试创建多个任务,每个任务都会在多个路由器上调用路由。我正在尝试将路由器的主列表(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)分解为子列表,每个线程可以迭代该子列表...

java runnable
1个回答
2
投票

当线程仍在运行时,如果列表更改,您将遇到问题。在您显示的代码中不会发生这种情况,因此对于这一点,您应该没问题;例如,如果您在构造函数中创建列表,并且从不更改它。

© www.soinside.com 2019 - 2024. All rights reserved.