Sadržaj:
Definicija - Što znači Atomski?
Atomic je skup alata promjenjivih klasa paketa java.util.concurrent.atomic koji pomažu u pisanju algoritama zaključavanja i čekanja bez Java-jezika. Algoritam koji zahtijeva samo djelomične niti za konstantan napredak ne uključuje zaključavanje. U algoritmu bez čekanja, sve niti kontinuirano napreduju, čak i u slučaju kvara ili kašnjenja niti. Algoritmi za zaključavanje i bez čekanja poznati su i kao algoritmi za blokiranje. Neblokirajući algoritmi koriste se za zakazivanje procesa i niti na operacijskom sustavu i razini Java virtualnog stroja.
Tehopedija objašnjava atomsku
Sve klase paketa java.util.concurrent.atomic u svojim nazivima imaju "atomski" prefiks. Postoje različite vrste atomskih varijabli dostupne u paketu java.util.concurrent.atomic, uključujući:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Primjer je scenarij gdje nit A drži bravu. A može pristupiti i mijenjati samo varijable koje su zaštićene ovom bravom. Ako nit B drži ovu bravu nakon A, tada samo B može vidjeti A promjene na varijablama zaštićenim tim zaključavanjem. Glavni problem s zaključavanjem nastaje kada B pokušava dobiti zaključavanje koje drži A. U ovom slučaju B se blokira i čeka dok brava ne postane dostupna. Neblokirani algoritmi rješavaju ovaj problem.
Glavna svrha iza izgradnje atomske klase je primjena neblokirajućih podatkovnih struktura i njihovih povezanih klasa infrastrukture. Atomske klase ne služe kao zamjena za java.lang.Integer i srodne nastave. Većina java.util.concurrent klasa paketa koristi atomske varijable umjesto sinkronizacije, bilo izravno ili neizravno. Atomske varijable također se koriste za postizanje veće propusnosti, što znači veće performanse poslužitelja aplikacija.
