Sobes.tech
Middle+

Java-da volatile açar sözü nədir və necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

volatile bütün axınlar üçün dəyişənin dəyişikliklərinin görünməsini təmin edir.

  • Görünmə zəmanəti: Bir axın volatile dəyişəni dəyişdirdikdə, digər axınlar bu dəyişiklikləri görür. volatile olmadan, dəyişikliklər axının keşiində qala bilər və əsas yaddaş ilə sinxronizasiya olunmaya bilər.
  • Atomik deyil: volatile əməliyyatların atomikliyini zəmanət etmir. Artırma (i++) kimi əməliyyatlar atomik deyil və yarış vəziyyətlərinə səbəb ola bilər, hətta volatile ilə belə.

İstifadə sahələri:

  • Vəziyyət bayraqları: Bir axın bayrağı təyin etdikdə, digər axınlara müəyyən bir vəziyyət haqqında məlumat vermək üçün.
  • Sadə oxuma/yazma əməliyyatları: Bir dəyişən üzərində əməliyyatlar, tək bir yazma və digər çoxlu oxuma ilə məhdudlaşdıqda.

Bayraq ilə istifadə nümunəsi:

// Bitirmə üçün `volatile` bayrağından istifadə nümunəsi
public class VolatileExample {
    private volatile boolean terminated = false;

    public void start() {
        new Thread(() -> {
            while (!terminated) {
                // Thread-in işi
                System.out.println("Thread işləyir...");
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
            System.out.println("Thread tamamlandı.");
        }).start();
    }

    public void stop() {
        terminated = true; // `volatile` dəyişənində dəyişiklik
    }

    public static void main(String[] args) throws InterruptedException {
        VolatileExample example = new VolatileExample();
        example.start();
        Thread.sleep(500);
        example.stop();
    }
}