返回指定有序映射支持的同步(线程安全的)有序映射。为了保证按顺序访问,必须通过返回的有序映射(或其视图)完成对所有底层有序映射的访问。
当在返回的有序映射的 collection 视图或者其任何 submap、headmap 或 tailmap 视图进行迭代时,用户必须手工在该映射上进行同步:
sortedmap m = collections.synchronizedsortedmap(new treemap());
...
set s = m.keyset(); // needn't be in synchronized block
...
synchronized(m) { // synchronizing on m, not s!
iterator i = s.iterator(); // must be in synchronized block
while (i.hasnext())
foo(i.next());
}
或者:
sortedmap m = collections.synchronizedsortedmap(new treemap());
sortedmap m2 = m.submap(foo, bar);
...
set s2 = m2.keyset(); // needn't be in synchronized block
...
synchronized(m) { // synchronizing on m, not m2 or s2!
iterator i = s.iterator(); // must be in synchronized block
while (i.hasnext())
foo(i.next());
}
不遵从此建议将导致无法确定的行为。
如果指定的有序映射是可序列化的,则返回的有序映射也将是可序列化的。
- java bean和java class的区别??
iis7站长之家:
m
- 被“包装”在同步有序映射中的有序映射。
- 返回:
- 指定有序映射的同步视图。