Давайте проясним некоторые термины:
- Монитор синхронизированного блока фактически является монитором объекта
- Ссылки на монитор синхронизируемого неоднозначны: вы хотите, чтобы все места в коде, на которые ссылается этот монитор, или все поля / локальные переменные, которые указывают на монитор?
Где в коде содержится ссылка на монитор?
Сурадж уже описывает, как это сделать: Search > References > Workspace...
. Вы также можете отфильтровать эти ссылки только для доступа на чтение, на запись, для разработчиков и т. Д. Такие ссылки можно найти с помощью статического анализа кода, поэтому запускать приложение не нужно. Это, однако, не будет автоматически обнаруживать случаи, когда ссылка на объект присваивается полю, которое затем присваивается другой переменной. Это только обнаруживает ссылку на эту конкретную ссылку на объект.
Какие переменные указывают на монитор?
Это будет обрабатывать случай, когда несколько полей / локальных переменных ссылаются на объект. Для этого приложение должно быть запущено. Вам необходимо установить точку останова в надлежащем месте, где монитор виден (самый простой способ - где-то вокруг синхронизированного блока, в котором используется данный монитор). В представлении «Переменные» будут показаны все переменные, доступные в текущей области. Вы можете получить все ссылки на объект, выбрав ссылку на объект в представлении переменных, выведя контекстное меню и выбрав All References...
. Это покажет вам все поля / локальные переменные, которые ссылаются на объект.