Կարո՞ղ ենք օգտագործել hashmap բազմաթելային միջավայրում:

Բովանդակություն:

Կարո՞ղ ենք օգտագործել hashmap բազմաթելային միջավայրում:
Կարո՞ղ ենք օգտագործել hashmap բազմաթելային միջավայրում:
Anonim

Ի՞նչն է սխալ՝ օգտագործելով HashMap-ը բազմաթելային միջավայրում: … Խնդիր է, եթե միևնույն HashMap օրինակին ավելանում են մի քանի շղթաներ՝ առանցայն համաժամացման: Նույնիսկ եթե ընդամենը 1 շարանը փոփոխում է HashMap-ը, և այլ շղթաներ կարդում են այդ նույն քարտեզից առանց համաժամացման, դուք խնդիրներ կունենաք:

Կարո՞ղ եք օգտագործել HashMap բազմաթելային միջավայրում:

Դուք պետք է համոզվեք, որ HashMap-ի բոլոր թարմացումներն ավարտված են նախքան շղթաների տեղադրումը, և այն շարանը, որը ստեղծում է քարտեզը, նույնպես կցում է շղթաները: Շղթաները օգտագործում են միայն HashMap-ը միայն կարդալու ռեժիմով – կամ ստանալ կամ կրկնել առանց հեռացնելու: Քարտեզը թարմացնող թեմաներ չկան:

Ինչու HashMap-ը չպետք է օգտագործվի բազմաթելային միջավայրում, կարո՞ղ է այն առաջացնել նաև անսահման հանգույց:

HashMap-ի լռելյայն հզորությունը 16 է, իսկ բեռնման գործակիցը 0,75 է, ինչը նշանակում է, որ HashMap-ը կկրկնապատկի իր հզորությունը, երբ 12-րդ Key-Value զույգը մուտքագրվի քարտեզում (160,75=12): Երբ 2 շղթա փորձում է միաժամանակ մուտք գործել HashMap, ապա դուք կարող եք հանդիպել անսահման հանգույց: Թեման 1-ը և շարանը 2-ը փորձում են տեղադրել 12-րդ բանալի-արժեք զույգը:

Արդյո՞ք HashMap ստանալ շարանը անվտանգ է:

HashMap-ը համաժամանակացված չէ: Այն անվտանգ չէ շղթաների համար և չի կարող տարածվել բազմաթիվ թեմաների միջև առանց համապատասխան համաժամացման կոդի, մինչդեռ Hashtable-ը համաժամանակացված է:

Ի՞նչն է լավագույնս համապատասխանում բազմաթելայինմիջավայր?

Պատասխանն է «ConcurrentHashMap»

Խորհուրդ ենք տալիս: