HashMap з'яўляецца несінхранізаваныя клас калекцыі . Калі нам трэба выканаць потокобезопасные аперацыі на ім, то мы павінны неабходна сінхранізаваць яго ў відавочным выглядзе. У гэтым уроку мы разгледзім , як сінхранізаваць HashMap
.
прыклад:
У гэтым прыкладзе мы маем HashMap <Integer, String> тыя, хто мае цэлыя ключы і значэння тыпу String. Для таго , каб сінхранізаваць яго мы выкарыстоўваем Collections.synchronizedMap (HashMap) вяртае струменева-карту рэзервовай копіі названага HashMap.
Важна адзначыць , у прыведзеным ніжэй прыкладзе:
Итератор павінен выкарыстоўвацца ў сінхранізаваны блок, нават калі мы сінхранізавалі HashMap відавочна (як мы гэта рабілі ў кодзе ніжэй).
сінтаксіс:
Карта карта = Collections.synchronizedMap (новы HashMap ()); ... // Гэта не павінны быць у сінхранізаваны блок Набор усталяваны = map.keySet (); // Сінхранізацыя на карце, а не на здымачнай пляцоўцы сінхранізаваныя (карта) { // Итератор павінен быць у сінхранізаваны блок Итератор итератор = set.iterator ();у той час як (iterator.hasNext ()) { ... } }
Поўны код:
пакет yupoos.ru; імпарт java.util.Collections; імпарт java.util.HashMap; імпарт java.util.Map; імпарт java.util.Set; імпарт java.util.Iterator; грамадскі клас HashMapSyncExample { дзяржаўны статычны сіла асноўны (String Арг []) { HashMap <Integer, String> HMAP = новы HashMap <Integer, String> (); hmap.put (2, "Індыга"); hmap.put (44, "Ажит"); hmap.put (1, "Брэд"); hmap.put (4, "Сэчины"); hmap.put (88, "XYZ"); Карта карта = Collections.synchronizedMap (HMAP); Набор усталяваны = map.entrySet (); сінхранізаваныя (карта) { Итератор я = set.iterator (); // Элементы індыкацыі у той час як (i.hasNext ()) { Map.Entry меня = (Map.Entry) i.next (); System.out.print (me.getKey () + ":"); System.out.println (me.getValue ()); } } } }
выхад:
1: Brad 2: Аніл 4: Сэчин 88: XYZ 44: Ажит
Што выкарыстанне сінхранізацыі HashMap?
Як сінхранізаваць гаворыць толькі па адным за раз - якая частка прыкладу кажа, што толькі адзін становіцца даступны?
У асноўным я хацеў бы ведаць розніцу ч / б сінхранізацыі і ня HashMap сінхранізацыі з выкарыстаннем шматструменнага прыкладу і ў асноўным паказваю розніцу
Было б выдатна ў жуйкі праясніць мае пытанні.
Добры дзень,
У прыведзенай вышэй праграме, як прыйшоў выхад, я не атрымліваю, якім чынам, яго друк вынік ?? можа ў калі ласка, сцісла пра гэта ..
дзякуй
chinmayee
якая памылка вы атрымліваеце? Ён выкананы ідэальна для мяне.
Можа быць, вы захавалі імя пакета, як гэта, паспрабуйце выдаліць гэты радок або захаваць файл Java у адпаведнасці з імем пакета.
просты і зразумелы.
Калі ласка, пакажыце праграму ў шматструменных асяроддзі таксама!