synchronize
Bir yöntemden önce anahtar kelimeyi kullanmanın o nesneye senkronizasyon getirdiğini biliyorum . Yani, nesnenin aynı örneğini çalıştıran 2 iş parçacığı senkronize edilecektir.
Bununla birlikte, senkronizasyon nesne düzeyinde olduğundan, nesnenin farklı örneklerini çalıştıran 2 iş parçacığı senkronize edilmeyecektir. Bir Java sınıfında yöntem tarafından çağrılan statik bir değişkenimiz varsa, bunun sınıfın örnekleri arasında senkronize edilmesini isteriz. İki örnek, 2 farklı iş parçacığında çalışıyor.
Senkronizasyonu aşağıdaki şekilde sağlayabilir miyiz?
public class Test
{
private static int count = 0;
private static final Object lock= new Object();
public synchronized void foo()
{
synchronized(lock)
{
count++;
}
}
}
lock
Statik olan bir nesne tanımladığımız ve synchronized
bu kilit için anahtar kelimeyi kullandığımız için, statik değişkenin count
artık sınıf örnekleri arasında senkronize edildiği doğru Test
mu?