Рассмотрим следующий код:
// Below block executed by thread t1
synchronized(obj) {
obj.wait(0);
}
// This block executed by thread t2
synchronized(obj) {
obj.notify();
}
Я понимаю, что в приведенном выше коде, если t1
стал владельцем синхронизированного блока, и в то же время, если поток t2
пытается взять синхронизированный блок, то t2
переходит на ожидание ядра. Я хочу избежать этой ситуации и вращать t2
перед блоком, пока t1
не вызовет ожидание и не оставит право собственности на блок. Это возможно?
t1
откажется от блокировки, как только вызоветwait()
, поэтому окно возможностей для блокировки t2 действительно очень мало. - person Jon Skeet   schedule 03.11.2014java.util.concurrent.locks
не был бы создан. - person Erwin Bolwidt   schedule 03.11.2014