如何在没有同步的情况下从多个线程修改2D数组

Pri*_*nka 5 java data-structures

如何在java中设计2D数组,使其允许多个线程在不使用同步的情况下修改或插入特定位置的值

Naz*_*gul 2

好吧,如果没有同步,你就无法做到这一点。你唯一能做的就是减少锁的使用范围。如果您还不知道,请阅读有关锁粗化的内容。ConcurrentHashMap 使用它。想法是,不用锁定整个数组来进行修改,只需锁定要发生修改的数组片段(例如:开始、中间或结束)。这使数组 DS 保持开放状态以供其他线程读取和写入,并且不会发生阻塞,除非 2 个线程尝试同时更改同一段。