假设我有一些类似于存储在数组(2D)中的以下数据。我允许多个用户同时更新它,我想在表单上查看它或者我可以做什么,以便查看实时更新。
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
26 27 28 29 30
31 32 33 34 35
任何人都可以帮我在Java中完成上述任务吗?如果有一种很好的方法可以用Python等其他语言来实现,我也很感激。
答案 0 :(得分:0)
您必须使用' synchronized'关于方法或块的语句可以保存用户更改。它通过只允许一个用户执行整个同步块直到完成来控制对代码的访问。
以下是文档的链接,并附有一些示例。
https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
答案 1 :(得分:0)
我假设:
话虽如此,您只需使用一个int
元素的共享数组和一个跟踪其修订版的共享AtomicLong
。然后,您可以允许每个并发用户更新数组,只需确保每次更新时AtomicLong
都会增加。
您可以让UI线程定期检查共享数据,方法是先读取AtomicLong
,然后读取数组内容 - 周期的长度将取决于您想要维护的帧速率,但是我和#39; d认为30毫秒应该足够好了。
由于在<{1}}的写入和读取之间发生之前的边缘,因此可以保证看到线程内容正在更新。请注意,如果要使用AtomicLong
的数组,则需要确保对每个数组元素的写入都是原子的。
这里用一些虚拟代码快速说明原理:
long