将列表项传递给对象

时间:2015-08-12 15:54:04

标签: java multithreading

我遇到多线程问题,其中只有一个线程成功完成,其他线程也被终止(通过使用future.isdone()知道)但似乎只处理可调用的一半代码,我猜以下代码可能是问题。

for (int i = 0 ; i < threads ; i++) {
            System.out.println(i);
            callables.add(new MyCallable(companyNameParts.get(i),
                    companyNumberParts.get(i),companySICCodeParts.get(i),frame));
        }

以下哪个陈述是真的:

1.只将companyNameParts.get(i)的值传递给对象

2.将companyNamePart的整个列表传递给对象,然后从列表中获取值。

3.列表的引用传递给对象。

因为我正在进行多线程项目,所以我倾向于不在它们之间共享任何数据以降低复杂性,也许这是我意外地以某种方式共享数据的地方? (我的意思是companyNameParts无意中以某种方式暴露给每个线程?)

任何回复都非常感谢。提前谢谢。

1 个答案:

答案 0 :(得分:0)

是所有问题的答案。

new MyCallable接收对位于i的companyNameParts集合中的对象实例的引用。