Concurrency İleri

Güvenli olmayan iş parçacığı sonlandırmadan işbirlikçi iptale

Thread.stop() ve geçici paylaşılan bayrakları, kesintiye duyarlı görev iptaliyle değiştirin.

✕ Forced thread termination
Thread worker = new Thread(this::runTask);
worker.start();

// May stop the thread while shared state is inconsistent.
worker.stop();
✓ Future cancellation
Future<?> worker = executor.submit(this::runTask);

// Requests interruption; the task must cooperate.
worker.cancel(true);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
🛡

Değişmezleri korur

Görevler yalnızca iptal için tasarlanmış kod yollarında durur.

🧩

Standart kontrol

Future, yürütmeyi, tamamlanmayı ve iptali birlikte temsil eder.

🔗

Bileşenlenebilir

Kesinti, engelleyen kuyruklar, kilitler, executor'lar ve sanal iş parçacıklarıyla çalışır.

Eski Yaklaşım
Thread.stop()
Modern Yaklaşım
Future.cancel(true)
JDK'dan itibaren
5
Zorluk
İleri
Güvenli olmayan iş parçacığı sonlandırmadan işbirlikçi iptale
Mevcut

Future ve ExecutorService JDK 5'ten (Eylül 2004) beri kullanılabilir.

Thread.stop(), monitörlere sahipken veya paylaşılan durumu güncellerken kodu sonlandırabilir ve nesneleri hasarlı bırakabilir. Modern iptal işbirlikçidir. Future'ı kesinti ile iptal edin, mümkün olduğunda InterruptedException'ı yayın, yayılamadığında kesinti durumunu geri yükleyin ve görevi güvenli iptal noktalarına ulaşacak şekilde tasarlayın.