Collections.SynchronizedSortedMap(IDictionary) Метод

Определение

Возвращает синхронизированную (потокобезопасную) отсортированную карту, поддерживаемую указанной отсортированной картой.

[Android.Runtime.Register("synchronizedSortedMap", "(Ljava/util/SortedMap;)Ljava/util/SortedMap;", "")]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public static System.Collections.IDictionary SynchronizedSortedMap (System.Collections.IDictionary m);
[<Android.Runtime.Register("synchronizedSortedMap", "(Ljava/util/SortedMap;)Ljava/util/SortedMap;", "")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
static member SynchronizedSortedMap : System.Collections.IDictionary -> System.Collections.IDictionary

Параметры

m
IDictionary

отсортированная карта, "упаковаемая" в синхронизированную отсортированную карту.

Возвращаемое значение

синхронизированное представление указанной отсортированного сопоставления.

Атрибуты

Комментарии

Возвращает синхронизированную (потокобезопасную) отсортированную карту, поддерживаемую указанной отсортированной картой. Чтобы гарантировать последовательный доступ, очень важно, чтобы <надежный<>> доступ к резервной отсортированной карте выполнялся через возвращенную отсортированную карту (или ее представления).

Крайне важно, чтобы пользователь вручную синхронизировать возвращенную отсортированную карту при обходе любого из представлений коллекции или представлений коллекций любого из его subMapпредставлений или tailMapheadMap с помощью Iterator, Spliterator или Stream:

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 = s2.iterator(); // Must be in synchronized block
                 while (i.hasNext())
                     foo(i.next());
             }

Несоблюдение этого совета может привести к недетерминированному поведению.

Возвращаемая отсортированная карта будет сериализуемой, если указанная отсортированная карта сериализуема.

Документация по Java для java.util.Collections.synchronizedSortedMap(java.util.SortedMap<K, V>).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Применяется к