Чересстрочная синхронизация - это когда две блокировки synchronized
заблокированы в другом порядке.Итак, если у вас есть блокировка a
и блокировка b
и вы делаете следующее:
synchronized(a) {
// Do stuff ...
synchronized(b) {
// Do stuff ...
}
}
А затем в другом потоке:
synchronized(b) {
// Do stuff ...
synchronized(a) {
// Do stuff ...
}
}
Это будет чересстрочная синхронизация.Эта ситуация может привести к тупику, поэтому ее следует избегать любой ценой.
Надеюсь, это поможет.