这个问题可能很容易回答,但我只是不明白。 我减少了我的问题,直到这段代码被留下以便找到此问题的“原点”: 我试图用循环填充线程的ArrayList。Java - 用循环填充线程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'处启动线程来测试上面的循环。 我在期待控制台显示“Thread at Index:2”,但是显示如下: “Thread at Index:10” 无论我在“.get(int)”方法中写入哪个整数,I收到索引'10'。
这是为什么?以及如何解决这个问题?
线程的创建似乎正常工作...所以是整数'你'的问题?
我很感激任何帮助! 在此先感谢!
'u'是静态的,所以你总能获得电流值('10'你的程序运行时)。您不保存在任何地方创建线程时使用的值。 –
如果您的线程列表仅从一个线程(主线程?)访问,则不需要使用它同步。 – Raedwald