Java-da atom


JavaBaxılıb 38

Bu təlimatda Java-da Atomik, onun əməliyyatları, sinifləri və dəyişənləri ətraflı nümunələrlə müzakirə edəcəyik.

Java-da atom

Java-da atom, a-da çox vacib bir anlayışdır çox oxlu mühit. Bir çox mövzuların heç bir problemə yol açmadan paylaşılan mənbələrdən səmərəli istifadə etməsini təmin edən paralel yardım proqramlarından biridir. Bunun səbəbi, bu paylaşılan qaynaqlar çox iş parçalı bir mühitdə icra zamanı dəyərlərini dəyişdirə bilər. Atomluğu siniflərdə, əməliyyatlarda və dəyişənlərdə tətbiq edə bilərik.

Java Atom dərsləri

Atom sinifləri mövcuddur java.util.concurrent.atomic paket. Paylaşılan bir dəyişəndə ​​kilidsiz və iplik təhlükəsiz tətbiqetmə təmin edir. Həm də atom əməliyyatlarını dəstəkləyir. Atom sinifləri var get()set() uçucu dəyişənlərin oxunması və yazılması üçün istifadə olunan metodlar.

Aşağıda paralel paketdə mövcud olan müxtəlif atom sinifləri toplusu verilmişdir.

Atom sinfitəsvir
Atomik BooleanBoole dəyərlərini atomik olaraq yeniləyir
Atom İntegeriTam dəyərləri atomik olaraq yeniləyir
AtomicTegerArrayTamsayı sıra elementlərini atomik şəkildə yeniləyir
Atom UzunluğuUzun dəyərləri atomik olaraq yeniləyir
Atom Uzun UzunluqUzun sıra elementlərini atomik şəkildə yeniləyir
AtomicMarkable ReferenceNişan işarəsi ilə obyekt referansını atomik olaraq yeniləyir
Atomik İstinadObyekt arayışını atomik olaraq yeniləyir
AtomicArray ReferenceObyekt arayışını atomik olaraq yeniləyir

Aşağıda atom siniflərinin bir hissəsi olan ümumi metodlar verilmişdir

almaq (): Cari dəyəri alır

dəsti (): Atom dəyişkəninin dəyərini təyin edir

lazySet (): Nəhayət atom dəyişəninin dəyərini təyin edir

comparAndSet (): Gözlənilən dəyərə bərabər olduqda dəyəri yenilənmiş dəyərə təyin edir.

Java Atom əməliyyatları

Birlikdə icra edən və ya heç vaxt icra etməyən atom əməliyyatları və ya hərəkətləri. Aşağıda atom əməliyyatları ilə əlaqəli üç əsas konsepsiya verilmişdir.

  • Atom əməliyyatları görünməz və ya təyin olunmayan və gözlənilməz ola bilər.
  • Görünən hərəkətlər, bir ipin təsiri digər ipə görünəndə baş verir.
  • Hərəkətlərin sıralanması iplikdəki hərəkətlər digər iplik üçün sıradan çıxdıqda baş verə bilər.

Aşağıdakılardan hər hansı biri ilə atom hərəkətlərini həyata keçirə bilərik:

  • Uçucu dəyişənlər
  • Aşağı səviyyəli atom əməliyyatları (təhlükəli)
  • Atom dərsləri

Java Atomic dəyişənlər

Dəyişən üzərində atom əməliyyatları aparmaq üçün atom dəyişkənlərindən istifadə edə bilərik. Bu dəyişənlərin çoxsaylı işləməli bir mühitdə istifadə edilməsi vacibdir, əks halda paralellik probleminə səbəb ola bilər.

Java-da atomPin

Misal: Atom dəyişən

Aşağıda çox işləməli bir mühitdə atom dəyişkənliyindən istifadə nümunəsi verilmişdir. Bu sayğacı atom dəyişənləri kimi istifadə etdiyimizdən və bir çox mövzu eyni dəyişəndən istifadə etdikdə uyğunsuz nəticələrin qarşısını aldığımızdan bu, iş üçün təhlükəsizdir. The addAndGet() metod dəyəri artırır və sonra alır. Hər iki əməliyyat birlikdə həyata keçirildiyi üçün atom xarakterlidir və ona daxil olan bir neçə mövzu olsa belə nəticələrə təsir göstərmir.

import java.util.concurrent.atomic.*;

class UpdateCounter extends Thread {
  AtomicInteger aiCount;
  
  UpdateCounter(){
    aiCount = new AtomicInteger();
  }
  
  public void run() {
    int max = 10;
    
    for(int i=0;i<max;i++)
      aiCount.addAndGet(1);
    
  }
  
}
public class AtomicDemo {

  public static void main(String[] args) throws InterruptedException {
    UpdateCounter c = new UpdateCounter();
    
    Thread t1 = new Thread(c, "Thread1");
    Thread t2 = new Thread(c, "Thread2");
    
    t1.start();
    t2.start();
    
    t1.join();
    t2.join();
    
    System.out.println(c.aiCount);

  }

}
20

Atom, Sinxronizasiya və uçucu arasındakı fərq

AtomSinxronvolatile
Dəyişənlərə aiddirMetodlara aiddirDəyişənlərə aiddir
Atomluqla yanaşı görmə qabiliyyətini təmin edirAtomluqla yanaşı görmə qabiliyyətini təmin edirYalnız görünürlüğünü təmin edir və atomikliyi yoxdur
Tətbiq deyilHər hansı bir sinxronlaşdırılmış blok və ya üsul tətbiq edə bilərTətbiq edilmir
Tətbiq edilmirEyni obyekti və ya fərqli obyekti kilidləyə bilərTətbiq edilmir

arayış

Şərh yaz

Translate »
1