Sobes.tech
Middle

Java-da interrupted() və isInterrupted() metodları arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

isInterrupted() yoxlamaq üçün cari axının kəsilmə bayrağının qurulub-qurulmadığını, sıfırlamadan.

interrupted() yoxlamaq üçün cari axının kəsilmə bayrağının qurulub-qurulmadığını və sonra onu sıfırlayır, əgər qurulmuşsa. Bu metod static-dir.

Nümunə:

// Axın yaradılır
Thread t = new Thread(() -> {
    while (!Thread.currentThread().isInterrupted()) {
        // Faydalı işləri yerinə yetir
    }
    System.out.println("Axın kəsildi.");
});

// Axını başlat
t.start();

// Axını kəs
t.interrupt();

// isInterrupted() ilə interrupt() sonrası bayraq vəziyyətini yoxlamaq
System.out.println("isInterrupted() sonrası interrupt(): " + t.isInterrupted()); // true olmalı

try {
    // Axının bitməsini gözləyirik (bu halda, tez bitəcək)
    t.join();
} catch (InterruptedException e) {
    // join() pozulursa, kəsilmə bayrağını bərpa et
    Thread.currentThread().interrupt();
}

// interrupted() ilə interrupt() sonrası bayraq vəziyyətini başqa bir axından yoxlamaq!
// Diqqət: interrupted()-ni başqa axından çağırmaq mənalı deyil,
// çünki o, çağıran axının bayrağı ilə işləyir.
// Demonstrasiya üçün, onu kəsilmiş axında çağırmaq lazımdır.

// Başqa bir axında interrupted() çağırışı (t ilə əlaqəsiz)
System.out.println("interrupted() hazırki axın: " + Thread.interrupted()); // false olmalı (əgər hazırki axın kəsilməyibsə)

Əsas fərq:

Metod Kəsilmə bayrağı sıfırlanır? Metod tipi
isInterrupted() Xeyr Nümunə
interrupted() Bəli Statik