這個問題可能很容易回答,但我只是不明白。 我減少了我的問題,直到這段代碼被留下以便找到此問題的「原點」: 我試圖用循環填充線程的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