リストがあります:
ArrayList リスト = 新しい ArrayList<>();
最初のスレッドで要素を追加します (高速です - 30/秒)。2 番目のスレッドで、そのサイズを読み取り、ファイルに出力します。
最初のスレッド:
synchronized(list){
list.add(PlayerPosition);
}
2 番目のスレッド:
synchronized(list){
if(list.size()>0)
out.print(list.size() + " ");
}
これはファイルの出力で、一部のみです: 1 1 1 3 3 5 4 6 7 7 9 11 8 9 12 10 14 16
それは間違っています。なぜなら、それは増加するだけだからです。1 1 1 はありえますが、11 8 はありえません。
私のプログラムは大きいですが、これらはこのリストの出現のみです (デバッグのためにコードの半分を削除しました)。list.remove()
アプリ全体に等はありません。
質問があります。このように動作する可能性はありますか? そうでない場合は、コードのどこかに私の責任があります。
ええ、私は CopyOnWriteArrayList で試しました - 同じことです。ありがとう!