9 Java tekli desenini ayrıntılı olarak açıklayın

Tekli modun özellikleri

  • Bir sınıfın yalnızca tek bir örneklenmiş nesne üretmesine izin verilir.
  • Tekil sınıf yapım yöntemi özelleştirilmiştir ve nesnelerin dışarıdan oluşturulmasına izin verilmez.
  • Singleton sınıfı dışarıya statik yöntemler sağlar ve içinde oluşturulan somut nesneyi döndürmek için yöntemi çağırır.

Tembel (güvenli olmayan ileti dizisi)

Esas olarak, tekli sınıfın, Lazy Loading'in etkisini elde etmek için somutlaştırılmış bir nesne yaratması gerektiğinde harici olarak somutlaştırılması gerektiği şeklinde kendini gösterir.

Statik getSingleton () yöntemi ve özel izin yapıcısı, başlatılmış bir nesne oluşturmanın tek yolunu sağlar.

Dezavantajlar: Çoklu iş parçacığı dikkate alınmadan, aynı anda birden çok ziyaretçi erişebilir ve birden çok nesne oluşturma sorunu ortaya çıkabilir, bu nedenle bu yöntem çoklu iş parçacığı altında kullanılamaz.

Tembel (iş parçacığı açısından güvenli, eşzamanlı yöntem, önerilmez)

Tembel iş parçacığı güvensizliği göz önüne alındığında, iş parçacığı eşitlemesini sağlamak için getSingleton () için eşitlenmiş kilitlemeyi düşünmek doğaldır.

Yetersiz: düşük verimlilik. Çoğu durumda, bu kilit tarafından kullanılan ekstra kaynaklar boşa harcanır.Her iş parçacığı sınıfın bir örneğini almak istediğinde, getSingleton () yönteminin yürütülmesi senkronize edilmelidir.

Aç Çince (iş parçacığı güvenli)

Sınıf yükleme sırasında nesnelerin örneklenmesi süreci aç bir Çin stilidir.

İş parçacığı senkronizasyon sorunlarını önlemek için, çalışırken bu sınıfı yükleyin ve ardından doğrudan erişin

Dezavantajlar: Aşağıdaki statik iç sınıflarla karşılaştırıldığında, bu yöntemde statik iç sınıflardan daha fazla yerleşik bellek vardır, bu da bellek israfına neden olur ve tembel yükleme etkisine ulaşmaz.

Statik dahili sınıf yükleme (iş parçacığı güvenliği)

Statik iç sınıf, singleton yüklendiğinde yüklenmez ve getSingleton () yöntemi çağrıldığında yüklenir, bu da tembel bir etki sağlar ve aynı zamanda iş parçacığı açısından güvenlidir.

Sınıfın statik özellikleri yalnızca sınıf ilk kez yüklendiğinde başlatılacaktır, bu nedenle yukarıdaki JVM yöntemi iş parçacığının güvenliğini sağlamamıza yardımcı olur.Sınıf başlatıldığında, diğer evreler giremez.

Numaralandırma (iş parçacığı güvenli)

Ücretsiz serileştirme; yalnızca bir örneğe sahip olma garantili; iş parçacığı açısından güvenli.

Etkili Java yazarının savunduğu yöntem neredeyse mükemmeldir ve kalıtım senaryolarında uygulanamaz.

Tembel çift çek kilit yöntemi (genellikle iş parçacığı için güvenlidir, tam güvenlik garanti edilemez)

Senkronizasyon kodu bloklarının kullanılması, ikinci yöntemin verimsizliğini önler, ancak bu yöntem, iş parçacığı senkronizasyonunun rolünü tam olarak oynamaz Yukarıdaki birinci yöntemin neden olduğu soruna benzer şekilde, çok iş parçacıklı erişim sırasında çok sayıda nesne üretilebilir.

Tembel tarzda çift kontrol nihai sürümü (el yazısı önerisiyle görüşme)

Altıncı yöntemden farkı, bu yöntemin tekil ifadeye uçucu anahtar sözcüğünü eklemesi ve böylece iş parçacığı güvensizliğinin düşük olasılığını çözmesidir.

Volatile, komutun yeniden düzenlenmesini engelleme rolünü oynar. Ataması tamamlanmadan önce, okuma işlemi (singleton == null) çağrılmayacaktır.

ThreadLocal (iş parçacığı güvenliği) kullanarak uygulama

ThreadLocal, her iş parçacığı için bağımsız bir değişken kopya sağlar, böylece birden çok iş parçacığının veri erişim çakışmalarını izole eder.

Çok iş parçacıklı kaynak paylaşımı sorunu için, senkronizasyon mekanizması "alan için zaman" yaklaşımını kullanırken, ThreadLocal "zaman için boşluk" yaklaşımını kullanır. İlki yalnızca bir değişken sağlar ve farklı iş parçacığının erişim için sıraya girmesine izin verirken, ikincisi her iş parçacığı için bir değişken sağlar, böylece birbirini etkilemeden aynı anda erişilebilir.

(İş parçacığı güvenliği) elde etmek için CAS kilidini kullanın

JavaFx xJavaFxTool tabanlı pratik araçlar koleksiyonu
önceki
Zhao Yongqian: Karakolda ne var? Sorumluluk omuzlarda, bir taraf ev, diğer taraf ülke
Sonraki
Chen Haonun en güzel karakteri fanatik değil büyüleyici bir Diao Chan
39 yaşındaki Cecilia Cheung yemeğini açığa çıkarmak için "gece geç saatte zehirlendi", 1 neden şeytan figürünü koruyor
Çek uluslar arası Sullar bir araba kazasında öldü, Caulk ve Cisse hafif yaralandı
Li Xiang, ticari faaliyetlere katılmak için lüks bir araba aldı Güvenlik görevlisi insanları uzaklaştırırken onları uzaklaştırdı Netizen: Var mı?
Kuru mallar: servis kaydı ve keşif alın
Figür, aşkın kristalleşmesine sahip Tang Yan'a benziyor, neden iyi haber açıklanmadı?
Chen Yifa'nın bloke edildikten sonra ilk çıkışı! Hayranlar yüz binlerce hediyeyi kaydırdı, Douyu canlı yayın odasını sildi
Neden sigara içmeyen kişilerde akciğer kanseri görülme sıklığı yüksektir? Hemen hemen her ailenin bu nedeni vardır!
Bean Li Zixuan, dikkat çekmek için arkadaşlarının fotoğraflarını yayınladı, süper popüler! Çıkış yapmazsan ateşli olmayacağını kim söyledi?
2018 Qingdao Yıllık Ekonomik Başarı Ödül Töreni yapıldı
"Şarkıcı ve Besteci" nin yarışma sistemi aniden değişti ve Wang Yuan bunu gizemli değiştirmeden bekleyemez. Hotdog kendinden çok emin.
"Shan Shan Geliyor 2", Zhao Liying'i reddedilmeye davet ediyor. Nedeni açıkladıktan sonra netizenler: çok basit
To Top