Saya tahu bahwa menggunakan synchronizekata kunci sebelum metode membawa sinkronisasi ke objek itu. Artinya, 2 utas yang menjalankan contoh objek yang sama akan disinkronkan.
Namun, karena sinkronisasi berada di level objek, 2 utas yang menjalankan instance objek yang berbeda tidak akan disinkronkan. Jika kita memiliki variabel statis di kelas Java yang dipanggil oleh metode, kita ingin itu disinkronkan di seluruh instance kelas. Kedua contoh tersebut berjalan di 2 utas berbeda.
Bisakah kita mencapai sinkronisasi dengan cara berikut?
public class Test
{
private static int count = 0;
private static final Object lock= new Object();
public synchronized void foo()
{
synchronized(lock)
{
count++;
}
}
}
Apakah benar bahwa karena kita telah mendefinisikan objek lockyang statis dan kita menggunakan kata kunci synchronizeduntuk kunci itu, variabel statis countsekarang disinkronkan di seluruh kelas Test?