public class Main{
public static void main(String[] args) throws Exception {
// Creating objects for class Check(2 different objects)
Check c = new Check("s1");
Check c1 = new Check("s2");
c.start();c1.start();
}
}
class Check extends Thread{
Check(String name){super(name);}
private Integer ab = 2;
public void run(){
synchronized (ab) {
System.out.println(Thread.currentThread().getName());
for(int i=0;i<10;i++)System.out.print(i+" ");
}
}
}
Здесь я синхронизирован по переменной ab. И я создал два разных экземпляра класса Check также, но я всегда получаю вывод для s1, за которым следует s2 или наоборот, но не смешанный, почему это так? когда я уже создал два отдельных объекта (в основном), так что два разных потока, две разные переменные ab, и как он становится общим ресурсом для двух разных объектов?