İki iş parçacığı arasında bir başlatma işlemini eşitlemek için CountDownLatch kullanıyorum ve atmak için InterruptedException düzgün işlenmesi hakkında merak ediyordum.CountDownLatch InterruptedException
private CountDownLatch initWaitHandle = new CountDownLatch(1);
/**
* This method will block until the thread has fully initialized, this should only be called from different threads Ensure that the thread has started before this is called.
*/
public void ensureInitialized()
{
assert this.isAlive() : "The thread should be started before calling this method.";
assert Thread.currentThread() != this, "This should be called from a different thread (potential deadlock)";
while(true)
{
try
{
//we wait until the updater thread initializes the cache
//that way we know
initWaitHandle.await();
break;//if we get here the latch is zero and we are done
}
catch (InterruptedException e)
{
LOG.warn("Thread interrupted", e);
}
}
}
bu desen mantıklı mı i başlangıçta yazdı
kod bu? Temel olarak InterruptedException'u görmezden gelinceye kadar beklemek iyi bir fikirdir. Sanırım bu durumun kesintiye uğrayacağı durumları anlamıyorum, dolayısıyla onları farklı bir şekilde ele almam gerekip gerekmediğini bilmiyorum.
Neden bir InterruptedException buraya atılır, onu ele almak için en iyi uygulama hangisidir?
Biçimlendirmeyi düzeltmeye çalıştım ve bir düzenleme çakışması yaptım. Geri alma seçeneğim yok. Afedersiniz! –
Zaten geri aldım. Yardımın için teşekkürler! Yanlış olduğunu fark ettim, ancak daha sonra metnin duvarını yazarken aynı zamanda düzeltmeye karar verdim. – jdmichal
Aslında hayır, sadece geri dönüştürmek istediğiniz düzenlemede değil, ** - ** geri yüklemek istediğiniz düzenlemede geri almayı tıklattığınız Vikipedi için kullanıyorum. –