Возможный дубликат:
Java Synchronized Block для .class
Я читал статью о синхронизации. Я запутался в нижних точках и нуждаюсь в большем пояснении.
1) Для блока синхронизации. Как
synchronize(this){
// code
}
отличается от
synchronize(MyClass.class){
//code
}
2) Синхронизация метода экземпляра означает, что потоки должны получить эксклюзивную блокировку экземпляра, тогда как синхронизация статического метода означает, что поток должен будет получить блокировку для всего класса (исправьте меня, если я ошибаюсь). Поэтому, если класс имеет три метода, и один из них статически синхронизирован, то если поток получает блокировку этого метода, значит, он будет блокировать весь класс, так что это означает, что остальные два будут заблокированы, а другой метод не сможет получить доступ к этим двум методам, поскольку весь класс имеет блокировку?