Я видел это в одном из выпусков информационных выпусков Heinz Kabutz Java Specialist и, хотя все статьи (и действительно все) статей доктора Кабуца хорошо объяснены и детализированы, он, казалось, замалчивал то, что делает этот код, или что еще важнее:
public class SomeObject {
private Object lock1;
private Object lock2;
public void doSomething() {
synchronized(lock1) {
synchronized(lock2) {
// ...
}
}
}
}
Каковы последствия вложенности блоков synchronized
? Как это влияет на различные потоки, пытающиеся выполнить doSomething()
?