2016-03-29 23 views
2

Netty'de sınıf yöntemlerinde yerel olarak çok sık atanan nesne üyesi değişkenlerini gördüm. Bu bir tarz meselesi mi yoksa programlı bir fayda mı var?Nesne üyesi değişkenini yerel olarak bir yöntemde atama avantajı var mı?

Bir kod parçacığı aşağıda dahil ettik: çoklu iş parçacığı bir endişe olduğunda

public ChannelFuture bind() { 
    validate(); 
    SocketAddress localAddress = this.localAddress; 
    if (localAddress == null) { 
     throw new IllegalStateException("localAddress not set"); 
    } 
    return doBind(localAddress); 
} 
+2

'bind()' bir 'ChannelFuture' döndürüyor mu? Bunun, * örneğinin * 'localAddress'inde yapılan bir değişikliğin, bağlama çağrısının sonucunu etkilemeyeceği (ileride bir zamana kadar tamamlanamayabilecek) şekilde saklandığına inanıyorum. –

cevap

2

Genellikle bu desen görüyoruz. Örneğin, başka bir iş parçacığı üye değerini değiştirebilir veya null onayından sonra boş bırakabilir, ancak yine de bu noktada üye erişim için geçerli bir kullanım durumu. Veya kod kilitleri/senkronizasyonu önlemek için çalışıyor. Bunun yerine üye yerel bir yere kopyalanır ve boş bir erişimi önlemek için yerel kopya kullanılarak tüm diğer işlemler yapılır.

+1

Defansif atama o zaman mantıklı. – MWright

İlgili konular