Синхронизированный блок в java

Я наткнулся на код:

synchronized(Account.this)   
{}   

где Account — это класс.
Означает ли Account.this какой-либо текущий экземпляр класса Account?


person Sameer Sarmah    schedule 30.10.2013    source источник
comment
Вы уверены, что Account — это класс, а не переменная с неправильным названием?   -  person Jeanne Boyarsky    schedule 30.10.2013
comment
Account.this относится к экземпляру Account, в частности к этому экземпляру Account. Возможно, ссылка делается изнутри во внутреннем классе, где невозможно использовать this напрямую...   -  person MadProgrammer    schedule 30.10.2013
comment
Я предполагаю, что код находится в анонимном или ином внутреннем классе, и эта блокировка находится во внешнем классе.   -  person Boris the Spider    schedule 30.10.2013
comment
Это объяснение синтаксиса Class.this может быть уместным: stackoverflow.com/a/5530293/2288659   -  person Silvio Mayolo    schedule 30.10.2013
comment
Это вопрос не о многопоточности, а о синтаксисе Java. Я не думаю, что последние два тега подходят.   -  person arshajii    schedule 30.10.2013


Ответы (2)


Обычно он используется внутри внутреннего класса: это означает экземпляр this внешнего класса Account.

Написание this само по себе вернет экземпляр внутреннего класса, а не внешнего класса.

person Samuel O'Malley    schedule 30.10.2013

Это, вероятно, будет из внутреннего класса Account.

class Account {
  class InnerAccount {
    ...
    synchronized(Account.this) {
    }
  }
}
person OldCurmudgeon    schedule 30.10.2013
comment
исправить синхронное написание - person iluxa; 30.10.2013