Како најбоље применити истовремену мапу хеширања на Јави?



Овај чланак ће вас упознати са концептом који се назива Јава истовремена хеш-карта у Јави и следити га практичном демонстрацијом

Овај чланак ће вас упознати са концептом који се назива Цонцуррент Хасх Мап Ин и пратите то практичном демонстрацијом. Следећи показивачи биће обрађени у овом чланку,

Настављамо са овим чланком о Истовременој хеш мапи на Јави





Како ЦонцуррентХасхМап интерно ради?

Од Јаве 5 надаље, ЦонцуррентХасхМап је представљен као алтернатива за ХасхТабле. Такође можемо добити синхронизовану мапу користећи метод класе услужних програма који се назива синхронизована карта (), али постоји недостатак ове методе, тј. Врло слабе перформансе јер јој само једна нит може приступити одједном. Дакле, ЦонцуррентХасхМап се бави овим проблемима.



Настављамо са овим чланком о Истовременој хеш мапи на Јави

Зашто друга мапа?

Иако већ имамо ХасхМап, ХасхТабле, оно што је потребно ЦонцуррентХасхМап-у, то је зато што пружа боље перформансе, а истовремено је и сигурно заштићен од нити.

Настављамо са овим чланком о Истовременој хеш мапи на Јави



Како је другачије?

Такође се заснива на хеширању, али његове перформансе побољшава стратегија закључавања. За разлику од ХасхТабле или Синцхронизед ХасхМап, он не примењује исто закључавање на сваку методу, користи засебну браву за сваку методу, већ користи закључавање поновног уласка у ту сврху. Слично ХасхМап-у, ЦонцуррентХасхМап има 16 сегмената, тј. Сегмената, да би створио ЦонцуррентХасхМап са више од 16 сегмената и има различите конструкторе.

како применити Јава апликацију у авс

Пре детаљног разговора, прегледајмо неколико концепата у наставку:

ЦонцуррентХасхМап: Ова мапа омогућава истовремени приступ нити. Само се део карте који се назива сегмент, тј. Основна структура података, закључава приликом додавања или ажурирања карте. Омогућава истовремени приступ нити за читање података без закључавања. Уведен је ради побољшања перформанси.

  • Ниво паралелности: То је број који је процењени број истовремено ажурираних нити.
  • Фактор оптерећења: То је вредност која се користи за контролу фактора промене величине.
  • Почетни капацитет: То је својство које креира мапу са предвиђеном величином.

Погледајмо дијаграм испод и покушајмо да разумемо како ЦонцуррентХасхМап ради.

Слика- Истовремена Хасхмап- Едурека

Дакле, у горњем дијаграму имамо 16 брава које закључавају само део карте који је потребан да би се другим нитима могло приступити различитим нитима, побољшавајући тако перформансе.

Слично ХасхМап-у, ЦонцуррентХасхМап ради на сличан начин јер подразумевано садржи 16 сегмената и складишти елемент хеширањем, па ако елементи имају исти хеш, они се чувају у истом сегменту као што је приказано на горњем дијаграму уз помоћ повезане листе.

Настављамо са овим чланком о Истовременој хеш мапи на Јави

Разлика између ЦонцуррентХасхМап и ХасхМап

ХасхМап припада колекцијама, док ЦонцуррентХасхМап припада истовременим колекцијама, међутим постоје многе друге разлике међу њима.

  • ЦонцуррентХасхМап јеНавој сигуран, тјсинхронизовано, али ХасхМап није синхронизовано.
  • ЦонцуррентХасхМап има мало перформанси, јер је синхронизован, јер понекад нити морају чекати, али ХасхМап има високе перформансе, јер није синхронизован и било која нит може истовремено да му приступи.
  • Добићемо ЦонцуррентМодифицатионЕкцептион ако две нити истовремено покушавају да измене или додају садржај Објецт-а. Међутим, у случају ЦонцуррентХасхМап нећемо добити изузетак док изводимо исту операцију.

  • Нуле вредности су дозвољене за кључ и вредности у ХасхМап-у, међутим, ЦонцуррентХасхМап не дозвољава нулл вредности за кључ и вредност коју је покушао да дода нулл вредност, добићемо изузетак, тј. НуллПоинтерЕкцептион.

  • ХасхМап је уведен у ЈДК 1.2, док је ЦонцуррентХасхМап уведен у ЈДК 1.5.

Као што смо раније видели за боље перформансе, састоји се од низа чворова као сегмената табеле који су били сегменти табеле пре Јава 8 .

Сегменти се лено иницијализују када се изврши прво уметање. Свако сегме се може независно закључати закључавањем првог чвора сегмента, а операције читања такође не блокирају.

У поређењу са ХасхМап, ЦонцуррентХасхМап пружа екстра цонцурренциЛевел аргумент за контролу броја процењених нити које ће се користити.

Конструктори:

  1. ЦонцуррентХасхМап м = ново ЦонцуррентХасхМап ()

    Креира се нова празна мапа са подразумеваним почетним капацитетом 16, фактором оптерећења 0,75 и нивоом паралелности 16.

    неуспех брзо вс неуспех сигурно
  2. ЦонцуррентХасхМап м = нови ЦонцуррентХасхМап (инт ИнитиалЦапацити)
    Израђује се нова празна карта са наведеним почетним капацитетом, фактором оптерећења 0,75 и нивоом паралелности 16.

  3. ЦонцуррентХасхМап м = нови ЦонцуррентХасхМап (инт ИнитиЦапацити, флоат лоадФацтор)

    Креира се нова празна карта са наведеним почетним капацитетом и фактором оптерећења са нивоом паралелности 16.

  4. ЦонцуррентХасхМап м = нев ЦонцуррентХасхМап (инт ИнитиалЦапацити, флоат лоадФацтор, инт цонцурренциЛевел)
    Креира се нова празна мапа са наведеним почетним капацитетом, фактором оптерећења и нивоом паралелности.

  5. ЦонцуррентХасхМап м = ново ЦонцуррентХасхМап (карта м)
    Ствара нову ЦонцуррентХасхМап на датој мапи.

Преостала два аргумента: ИнитиЦапацити и лоадФацтор радили су потпуно исто као ХасхМап.
ЦонцуррентМап је меморија доследна операцијама кључ / вредност у окружењу са више нити.

Настављамо са овим чланком о Истовременој хеш мапи на Јави

Замке

Док преузима објекте, ЦонцуррентХасхМап није блокиран и може се преклапати са операцијама ажурирања, тако да за бољи учинак преузимају само најновије завршене операције ажурирања.

преокретање броја у јави

Резултати обједињених метода статуса, укључујући величину, исЕмпти и цонтаинсВалуе, обично су корисни само када мапа не пролази кроз истовремено ажурирање у другим нитима.

Ако се истовременим ажурирањима правилно контролише, ове методе статуса могу бити поуздане.

Иако ове методе не гарантују у реалном времену.

Подразумевани капацитет табеле је 16, међутим можемо га променити помоћу нивоа истовремености.

публиц ЦонцуррентХасхМап (инт инитиалЦапацити, флоат лоадФацтор, инт цонцурренциЛевел) {// ... иф (ИнитиалЦапацити

Ако се тражи да кључеви кључева буду поредани, можемо користити ЦонцуррентСкипЛистМап.

Сада бисте након извршавања горњег програма разумели Цонцуррент Хасх Мап у Јави. Тако смо дошли до краја овог чланка о Ако желите да сазнате више, погледајте , поуздана компанија за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га помињете у одељку за коментаре овог чланка и јавићемо вам се што је пре могуће.