Java'da kesinti ile aşağıdaki "deyim" kullanılıyorsa, örneğin from this answer. take bir engelleme operasyondurJava'da "atomik" kesme kontrolü mümkün mü?
while (!Thread.currentThread().isInterrupted()) {
try {
Object value = queue.take();
handle(value);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
, bir kesme Thread.currentThread().isInterrupted()
ait çek ve çağrı queue.take()
arasında "geldiğinde" eğer şu an için göz ardı edilemeyecek kesme olabilir? Bu "kontrol-eylem" işlemi değil mi? Eğer öyleyse, iş parçacığı kesintiye uğrarsa, döngü her halükarda bırakılacağı garanti edilebilir mi?
poll with a timeout kullanmak, döngü zaman aşımından sonra bırakılır, ancak kesintili durumu kontrol etmek ve atomik olarak hareket etmek mümkün mü?
Yukarıdaki kod tarafından nasıl bir kesinti yapılmaz? İşe alma çağrısından önce iş parçacığının kesintiye uğraması durumunda queue.take() öğesinin hemen atılacağını biliyorsunuz, değil mi? –
@JBNizet: Kodu kontrol ettim ve haklısınız, "InterruptedException" ifadesini fırlatıp, önce girilen durumu kontrol et ve at. Bir cevap eklerseniz, kabul edeceğim. – user140547