Turinys:
Apibrėžimas - ką reiškia atomas?
„Atomic“ yra kintamųjų „java.util.concurrent.atomic“ paketų klasių įrankių rinkinys, padedantis rašyti „Java“ kalbos užrakto ir laukimo algoritmus. Algoritmas, reikalaujantis tik dalinių gijų, kad būtų galima nuolat progresuoti, nėra užrakintas. Esant laukimo algoritmui, visos gijos progresuoja nuolat, net ir gijų sugedimo ar vėlavimo atvejais. Užrakinimo ir laukimo algoritmai taip pat žinomi kaip neužblokuojantys algoritmai. Neblokuojantys algoritmai naudojami procesų ir gijų planavimui operacinės sistemos ir „Java“ virtualiosios mašinos lygiais.
„Techopedia“ paaiškina „Atomic“
Visų „java.util.concurrent.atomic“ paketų klasių pavadinimuose yra „atominis“ priešdėlis. „Java.util.concurrent.atomic“ pakete yra įvairių tipų atominių kintamųjų, įskaitant:
- „AtomicBoolean“
- „AtomicInteger“
- „AtomicIntegerArray“
- „AtomicIntegerFieldUpdater“
- „AtomicLong“
- „AtomicLongArray“
- „AtomicLongFieldUpdater“
- „AtomicReference“
Pavyzdys yra scenarijus, kai siūlas A turi užraktą. A gali pasiekti tik tuos užraktus apsaugotus kintamuosius ir juos pakeisti. Jei sriegis B laiko šią spyną po A, tada tik B gali peržiūrėti A kintamųjų, apsaugotų tuo konkrečiu užraktu, pokyčius. Pagrindinė užrakinimo problema iškyla tada, kai B bando įsigyti A laikomą spyną. Tokiu atveju B blokuojamas laukti, kol užraktas bus. Neblokuojantys algoritmai išsprendžia šią problemą.
Pagrindinis atominių klasių kūrimo tikslas yra neblokuojančių duomenų struktūrų ir su jomis susijusių infrastruktūros klasių įgyvendinimas. Atominės klasės nenaudojamos kaip java.lang.Integer ir susijusių klasių pakaitalai. Daugelyje „java.util.contrrent“ paketų klasių vietoj sinchronizacijos tiesiogiai ar netiesiogiai naudojami atominiai kintamieji. Atominiai kintamieji taip pat naudojami didesniam pralaidumui pasiekti, o tai reiškia didesnį programos serverio našumą.
