我遇到多线程问题,其中只有一个线程成功完成,其他线程也被终止(通过使用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无意中以某种方式暴露给每个线程?)
任何回复都非常感谢。提前谢谢。
答案 0 :(得分:0)
否是所有问题的答案。
new MyCallable
接收对位于i
的companyNameParts集合中的对象实例的引用。