Size: a a a

Android Developers

2021 February 15

DH

Daniil Horishnii in Android Developers
Andrew
private static Object device_locker_ = new Object();

public Device getDevice() {
      synchronized (device_locker_) {
          return device_;
      }
  }
 
 
getDevice().getDeviceInfo()
зачем явно объект лока создавать, хочешь статику - ну заюзай общепринятый для этого MyClass.class
источник

A

Andrew in Android Developers
Daniil Horishnii
зачем явно объект лока создавать, хочешь статику - ну заюзай общепринятый для этого MyClass.class
Вопрос конкретно про этот случай, а не как лучше.
источник

DH

Daniil Horishnii in Android Developers
Andrew
Вопрос конкретно про этот случай, а не как лучше.
Ответ нет. Получить девайс из синхронизированного геттера смогут потоки только по очереди, но дальше с полученной ссылкой (и объектом в памяти на который она будет ссылаться) смогут работать паралельно по идее
источник

A

Andrew in Android Developers
Daniil Horishnii
Ответ нет. Получить девайс из синхронизированного геттера смогут потоки только по очереди, но дальше с полученной ссылкой (и объектом в памяти на который она будет ссылаться) смогут работать паралельно по идее
Это точно? Ведь для того, чтобы вызвать любой метод каждый раз нужно будет получать ссылку.
источник

A

Andrew in Android Developers
getDevice().getDeviceInfo()
источник

A

Andrew in Android Developers
getDevice().setPIN()
источник

RC

Roman Chumachenko in Android Developers
Andrew
getDevice().getDeviceInfo()
Сделай тогда синхронизированные методы
источник

A

Andrew in Android Developers
getDevice().LogOut()
источник

DH

Daniil Horishnii in Android Developers
да, но после получения ссылки остальные методы уже не синхронизированы
источник

A

Andrew in Android Developers
Метод ведь нельзя вызвать без ссылки
источник

DH

Daniil Horishnii in Android Developers
лок не на ссылке, а на методе получения, геттере, только он у тебя критическая секция. После getDevice монитор свободен уже
источник

A

Andrew in Android Developers
В какой момент освободится device_locker_ ?
источник

RC

Roman Chumachenko in Android Developers
Andrew
В какой момент освободится device_locker_ ?
Как только блок синхронайз закончится
источник

A

Andrew in Android Developers
После выполнения getDeviceInfo() или getDevice()
источник

DH

Daniil Horishnii in Android Developers
в конце sync блока
источник

DH

Daniil Horishnii in Android Developers
getDevice()
источник

DH

Daniil Horishnii in Android Developers
если я конечно жутко не затупил)
источник

A

Andrew in Android Developers
А если getDeviceInfo() выпоняется синхронно?
источник

A

Andrew in Android Developers
getDevice().getDeviceInfo()
источник

A

Andrew in Android Developers
Пока не выполниться getDeviceInfo() блокировка будет или нет?
источник