我有一个匿名类,它从集合中获取迭代值,如下所示。通过这段代码,是否在匿名类中保留了直接变量in
?或不同的线程可以采取相同的in
值?匿名类中的最终变量
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 20; i++)
list.add(i);
for (final Integer in : list) {
new Thread(new Runnable() {
@Override
public void run() {
Thread.sleep(1000);
System.out.println(value + "," + in);
}
}).start();
}
我不明白你在问什么。在这种情况下,你为每个20个线程传递一个不同的'in'值。那是你想知道的吗? – 2014-11-06 23:02:01
我的问题是两个线程可以共享相同的值吗? – vinayag 2014-11-06 23:04:48
另外我认为迭代集合上的迭代隐式转换为循环的正常循环,其中包含相同的变量。所以我很困惑,每次迭代集合时是否都会创建一个新的'in'变量。 – vinayag 2014-11-06 23:06:52