【发布时间】:2020-04-22 02:31:18
【问题描述】:
所以我的程序是paint的一个版本。
它创建了一个画布,并允许我通过使用HashSet 和Iterator 从鼠标获取Point 来用鼠标在画布上绘画。
它还通过DatagramSocket 连接到另一个相同的程序,并将它生成的Point 发送到另一个在其画布上显示它的程序。
为此,我使用Runnable 线程侦听传入的Point 并将它们添加到HashSet。
我的问题是我得到java.util.ConcurrentModificationException,因为我在绘画时通过线程从连接的程序将Point 添加到HashSet。
我不知道如何解决此异常,因为我希望画布能够实时更新。
使用CopyOnWriteArraySet 解决了这个问题,我可以简单地替换我的HashSet :) 感谢您的支持!
【问题讨论】:
-
在循环中创建一个新集,然后将所有集添加到原始集。在添加过程中仍然会出现并发问题,因此您也必须注意这一点。
标签: java multithreading iterator hashset