SORU
2 Mart 2011, ÇARŞAMBA


Non-senkronize statik yöntemler parçacığı eğer güvenli't statik sınıf değişkenleri değiştirmek?

Eğer statik bir yöntem var mı diye merak ediyordum 'değil' senkronize, ama 'değil' değiştirmek herhangi bir statik değişken, iş parçacığı için güvenli mi? Ne ise yöntemi içinde yerel değişken oluşturur. Örneğin, aşağıdaki kod parçacığı güvenli mi?

public static String[] makeStringArray( String a, String b ){
    return new String[]{ a, b };
}

Eğer öyleyse ben iki iş arıyorum ths yöntem sürekli ve aynı anda, bir köpek (ki "great dane" ve "boğa köpek") ve diğer kediler ("Pers" ve "Siyam") aldığım kediler ve Köpekler aynı dizi mi? Ya da kediler ve Köpekler asla aynı zamanda bu yöntem aynı çağrı içinde olacak?

CEVAP
2 Mart 2011, ÇARŞAMBA


Bu yöntemin 0 güvenli iş parçacığı, static. öyle olmasa bile olurdu. İplik-güvenlik sorunu konuları arasında veri paylaşımı için gereken zaman doğar - atom oranı, görüş, vb bakmak gerekir.

Bu yöntem, yalnızca yığın üzerinde sabit nesneler yığını ve kaynaklar üzerinde bulunan parametreleri üzerinde çalışır. Yığın iş parçacığı için doğal olarak yerel, veri paylaşımı, hiç oluşur.

Sabit nesneler (String) da değiştirilemez, iş parçacığı için güvenli bir kez oluşturduğunuz için ve tüm iş parçacıkları aynı değeri görüyor. Eğer yöntemi (değişken) Date kabul edildi öte yandan eğer bir sorun olabilirdi. İki iş parçacığı aynı anda aynı nesne örneği, yarış Koşulları ve görünürlük sorunlara neden değiştirebilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FD2097

    FD2097

    21 HAZİRAN 2009
  • Fuse

    Fuse

    21 Kasım 2005
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011