Хэшмапты көп ағынды ортада пайдалана аламыз ба?

Мазмұны:

Хэшмапты көп ағынды ортада пайдалана аламыз ба?
Хэшмапты көп ағынды ортада пайдалана аламыз ба?
Anonim

Көп ағынды ортада HashMap қолданбасын пайдаланудың қателігі неде? … Бір HashMap данасынасинхрондалмаған бірнеше ағындар қосылса, мәселе туындайды. Тек 1 ағын HashMap файлын өзгертсе де және басқа ағындар сол картадан синхрондаусыз оқып жатса да, сізде ақаулықтар туындайды.

Көп ағынды ортада HashMap пайдалана аласыз ба?

Сіз мынаны тексеруіңіз керек: HashMap жаңартуларының барлығы ағындар жасалғанға дейін аяқталады және картаны жасайтын ағын да ағындарды ажыратады. Ағындар Хэшкартасын тек оқуға арналған режимде ғана пайдаланады – алу немесе жоюсыз итерация. Картаны жаңартып жатқан ағындар жоқ.

Неге HashMap көп ағынды ортада пайдаланылмауы керек, ол да шексіз цикл тудыруы мүмкін бе?

HashMap қолданбасының әдепкі сыйымдылығы 16 және Жүктеу коэффициенті 0,75, яғни картаға 12-ші кілт-мән жұбы енгізілгенде HashMap сыйымдылығын екі есе арттырады (160,75=12). 2 ағын HashMap-ке бір уақытта кіруге тырысқанда, сіз шексіз циклге тап болуыңыз мүмкін. 1-ші және 2-ші ағын 12-ші кілт-мән жұбын қоюға тырысады.

HashMap ағыны қауіпсіз бе?

HashMap синхрондалмаған. Ол ағынға қауіпсіз емес және дұрыс синхрондау коды болмаса, көптеген ағындар арасында бөлісу мүмкін емес, ал Hashtable синхрондалған.

Көп ағынды үшін ең қолайлысыорта?

Жауап: "ConcurrentHashMap"

Ұсынылған: