我目前正在开发 F1 模拟器,并且一直在努力实现记分板。
我有多辆车,每辆车都在一个线程上,每 5 秒更新一次距离和速度。另外,我还有另一个分数线程,它再次每 5 秒更新一次。我的问题是更新和排序分数。现在我正在使用 ConcurrentHashMap 来存储所有车辆。每辆车都会更新,我只是将其制成一个列表并对其进行排序:
public void sortCars() {
Collections.sort(sortedCars, Collections.reverseOrder());
}
我的主要问题如下,汽车需要以某种方式接收更新的列表,我将列表设为静态,但我的教授告诉我这很糟糕,因为列表不断更新,所以我的另一个选择是给出每个车辆都有一个分数,并在每个线程的每次迭代中对其进行排序。
我尝试过使用交换器,但速度太慢。有一段时间想过使用 Callable,但感觉不太对。除了列出的选项之外,我还有其他选择吗?如果不是,哪一个最好?
忘了补充,车辆只修改自己,分数类别只对其进行排序
最佳答案
事实证明,最好的解决方案是使用列表向车辆添加一个变量,每次我在 Score 用户中对它进行排序时,都会使用 setter 。不完全是我想要的,但有效,我只是想要没有变量,但我猜那是不可能的。
现在想想,我真是傻了。
关于java - java中的并发有序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61685792/