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 |