Поделиться через


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

Отсортированная карта для упаковки в синхронизированную карту сортировки.

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

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

Атрибуты

Комментарии

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

Очень важно, чтобы пользователь вручную синхронизировался на возвращенной отсортированной карте при обходе любого из представлений коллекции или представлений коллекций любого из его headMap subMapпредставлений, tailMap через IteratorSpliterator или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.

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