Jika saya memiliki 2 metode yang disinkronkan di kelas yang sama, tetapi masing-masing mengakses variabel yang berbeda, dapatkah 2 utas mengakses 2 metode tersebut pada waktu yang sama? Apakah kunci terjadi pada objek, atau apakah itu spesifik seperti variabel di dalam metode yang disinkronkan?
Contoh:
class X {
private int a;
private int b;
public synchronized void addA(){
a++;
}
public synchronized void addB(){
b++;
}
}
Bisakah 2 utas mengakses instance yang sama dari pertunjukan kelas X x.addA(
) dan x.addB()
pada saat yang sama?
synchronized (this)
blok di sekitar tubuh metode. Objek "ini" tidak menjadi terkunci, melainkan objek "ini" digunakan sebagai mutex dan tubuh dicegah dari mengeksekusi bersamaan dengan bagian kode lain yang juga disinkronkan pada "ini." Ini tidak berpengaruh pada bidang / metode lain dari "ini" yang tidak disinkronkan.