Добрый день!
Подскажите, что, пошагово, происходит когда отрабатывает данных код. Запутался совсем.
public void someMethodWithSynchronizedBlocks(Object obj1, Object obj2) {
synchronized (obj1) {
synchronized (obj2) {
System.out.println(obj1 + " " + obj2);
}
}
}
public static boolean isLockOrderNormal(final Solution solution, final Object o1, final Object o2) throws Exception {
Thread thread1 = new Thread() {
@Override
public void run() {
solution.someMethodWithSynchronizedBlocks(o1,o2);
}
};
Thread thread2 = new Thread() {
@Override
public void run() {
synchronized (o1){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
synchronized (o2){}
}
}
};
thread2.start();
thread1.start();
Thread.sleep(100);
return thread1.getState()!=Thread.State.BLOCKED;
у меня то false то true выводит.