Son zamanlarda, Java eşzamanlılığını bildiğini söyleyen mülakat yapanlara sorduğum bazı sorular:
- "Bellek görünürlüğü" tehlikesini açıklayın - JVM'nin bir monitör tarafından korunmayan ve bildirilmeyen değişkenler üzerindeki belirli işlemleri yeniden sıralama şekli,
volatile
böylece bir iş parçacığı başka bir iş parçacığı tarafından yapılan değişiklikleri görmeyebilir. Genellikle bunu, bu tehlikenin bulunduğu kodu göstererek (örneğin,NoVisibility
Goetz ve arkadaşlarının "Uygulamada Java Eşzamanlılığı" ndan Liste 3.1'deki örnek) ve sorunun ne olduğunu sorarak soruyorum. volatile
Yalnızca bildirilen gerçek değişkeni değilvolatile
, aynı zamanda değişkeni değiştirmeden önce bir iş parçacığı tarafından yapılan değişkenlerde yapılan değişiklikleri nasıl etkilediğini açıklayınvolatile
.- Neden
volatile
yerine kullanabilirsinizsynchronized
? - Bir durum değişkeni uygulamak
wait()
venotifyAll()
. Neden kullanmanız gerektiğini açıklayınnotifyAll()
. Koşul değişkeninin neden birwhile
döngü ile test edilmesi gerektiğini açıklayın .
Benim sorum şu - bunlar Java eşzamanlılığını bildiğini söyleyen birine sormak için uygun veya çok mu gelişmiş?
Ve biz oradayken, Java eşzamanlılığında çalışan bir kişinin Java çöp toplama ortalamasının üzerinde bir bilgiye sahip olması bekleniyor mu?
notifyAll()
"OS zamanlayıcı çalışma yaparken inanmıyorum, bu yüzden kullanıyorum notify()
" ile ilgili sorunuza cevap verirseniz nasıl tepki vereceğini merak ediyorum