SORU
22 Ocak 2010, Cuma


Nasıl konuları Java'da bir sınıfın farklı örnekleri arasında çalışan bir statik değişkeni eşitlemek için?

Bir yöntem daha önce senkronize anahtar sözcüğünü kullanarak bir nesne için eşitleme getiriyor biliyorum.
Bu, 2 iş parçacığı nesnenin aynı örnek çalışan eşitlenir.
Eşitleme nesne düzeyi, 2 olduğundan ancak, iş parçacığı nesnenin farklı örneklerini çalıştıran eşitlenir. Eğer yöntemiyle adında bir java sınıfı içinde statik bir değişken var, bu sınıfın örneklerini senkronize olmak istiyoruz.
İki tane 2 farklı konuları yayınlanıyor.
Aşağıdaki şekilde senkronizasyon elde edebilir miyiz?

public class Test  
{  
   private static int count = 0;  
   private static final Object lock= new Object();    
   public synchronized void foo() 
  {  
      synchronized(lock)
     {  
         count  ;  
     }  
  }  
}

Bir nesne '' statik ve kilit için senkronize anahtar kelime kullanıyoruz, statik varibale sayısı sınıf Test örnekleri arasında eşitlenir? kilit tanımlı olduğu doğru mu

CEVAP
22 Ocak 2010, Cuma


Statik bir değişken erişimini eşitlemek için çeşitli yollar vardır.

  1. Senkronize statik bir yöntem kullanın. Bu sınıf, nesne üzerinde eşitler.

    public class Test {
        private static int count = 0;
    
        public static synchronized void incrementCount() {
            count  ;
        }
    } 
    
  2. Sınıf açıkça eşitleme nesnesi.

    public class Test {
        private static int count = 0;
    
        public void incrementCount() {
            synchronized (Test.class) {
                count  ;
            }
        }
    } 
    
  3. Başka bir statik nesne üzerinde eşitleyin.

    public class Test {
        private static int count = 0;
        private static final Object countLock = new Object();
    
        public void incrementCount() {
            synchronized (countLock) {
                count  ;
            }
        }
    } 
    

Yöntem 3 kilit nesnesi sınıf dışında maruz kalmaz, çünkü birçok durumda en iyisi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • ibebrent

    ibebrent

    23 Temmuz 2007
  • iNCH

    iNCH

    20 Temmuz 2009

İLGİLİ SORU / CEVAPLAR