我有一个清单:
ArrayList 列表 = 新的 ArrayList<>();
在第一个线程上我添加元素(它很快 - 30/秒)在第二个线程上我读取它的大小并打印到文件。
第一个线程:
synchronized(list){
list.add(PlayerPosition);
}
第二个线程:
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 - 同样的事情。谢谢!