这个问题可能很容易回答,但我就是不明白。我减少了我的问题,直到留下一小段代码才能找到这个问题的“起源”:我正在尝试用循环填充线程的 ArrayList。
public static int u=0;
public void test(){
while (u <10) {
synchronized(threadList){
threadList.add(u, new Thread(){
@Override public void run(){
System.out.println("Thread at Index: " + u);
}
});
}
u++;
}
threadList.get(2).start();
}
最后一行我想通过在索引'2'处启动线程来测试上面的循环。我希望控制台显示“索引处的线程:2”,但显示的是:“索引处的线程:10”无论我在“.get(int)”方法中写入哪个整数,我都会收到索引'10'。
这是为什么?以及如何解决这个问题?
线程的创建似乎有效......整数'u'是问题吗?
我很感激任何帮助!提前致谢!