![]() |
1
2
在Java8中,还可以使用lambda方法:
|
![]() |
2
11
在迭代集合时对其调用Remove将导致每次都发生ConcurrentModificationException,即使所有操作都在同一线程中完成-正确的做法是获取显式迭代器并对此调用.Remove()。 编辑:修改示例:
|
![]() |
3
4
如果另一个线程可以在运行此逻辑时修改您的多映射,则需要向mharris的代码添加一个同步块:
或者,可以省略下面的迭代器,
removeall()调用不需要同步。但是,如果省略synchronized块,则多映射可能在removeall()调用和其中一个size()调用之间发生变化,从而导致nbremoved的值不正确。 现在,如果您的代码是单线程的,并且您只想避免一个ConcurrentModificationException调用,那么您可以省去multimaps.synchronizedMultimap和synchronized(eventmulimap)逻辑。 |
![]() |
4
4
你可能想看看
this blogpost
因为另一个陷阱
|
![]() |
5
1
我更喜欢
|