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,
volatilebö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,NoVisibilityGoetz ve arkadaşlarının "Uygulamada Java Eşzamanlılığı" ndan Liste 3.1'deki örnek) ve sorunun ne olduğunu sorarak soruyorum. volatileYalnı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
volatileyerine kullanabilirsinizsynchronized? - Bir durum değişkeni uygulamak
wait()venotifyAll(). Neden kullanmanız gerektiğini açıklayınnotifyAll(). Koşul değişkeninin neden birwhiledö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