この質問はおそらく簡単に答えることができますが、私にはわかりません。この問題の「原因」を見つけるために、この小さなコードが残されるまで問題を減らしました。スレッドの 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)」メソッドにどの整数を記述しても、インデックスを受け取ります。 「10」。
何故ですか?そして、これを修正する方法は?
スレッドの作成は機能しているようです...では、整数「u」が問題ですか?
どんな種類の助けにも感謝します! 前もって感謝します!