я действительно не могу думать ни о чем
Одна вещь, о которой я могу думать, это
@synchronized (self)
{
@synchronized (self){}
}
Но это не приведет к тупику, потому что блокировка является рекурсивной и просто позволит пройти одному и тому же потоку. Таким образом, вы не можете зайти в тупик, если для всей программы вы используете только одну переменную
Другое, о чем я могу думать, это
@synchronized (A)
{
@synchronized (B){}
}
в одну ветку и
@synchronized (B)
{
@synchronized (A){}
}
в другой. Я прав здесь?
Как тогда избежать тупика? Какие-то простые правила?