Diğer yanıtlarda açıklandığı gibi, kodunuz İş Parçacığı güvenli değildir , çünkü statik yöntem increment()
Sınıf izleyicisini kilitler ve statik olmayan yöntem decrement()
Nesne izleyicisini kilitler.
Bu kod örneği için, synchronzed
anahtar kelime kullanımı olmadan daha iyi bir çözüm mevcuttur . İş Parçacığı güvenliğini sağlamak için AtomicInteger kullanmanız gerekir .
Kullanarak güvenli iş parçacığı AtomicInteger
:
import java.util.concurrent.atomic.AtomicInteger;
class ThreadSafeClass extends Thread {
private static AtomicInteger count = new AtomicInteger(0);
public static void increment() {
count.incrementAndGet();
}
public static void decrement() {
count.decrementAndGet();
}
public static int value() {
return count.get();
}
}
increment
) alan tek bir yönteminiz varsa, iş parçacığı açısından güvenli olacaktır. Veya bir kilitleme nesnesi kullandıysanız. Dediğim gibi, Java hakkında bilgim yok - yorumum C # bilgisinden kaynaklanıyor.