Java - вызов синхронизированного метода изнутри синхронизирован во время ожидания - PullRequest
4 голосов
/ 02 апреля 2010

возможно ли вызвать синхронизированный метод изнутри синхронизированного метода во время ожидания доступности ресурса (используя wait ())? спасибо

Ответы [ 2 ]

9 голосов
/ 02 апреля 2010

Мьютексы Java являются рекурсивными, поэтому вы можете вызывать синхронизированный метод рекурсивно или вызывать другой синхронизированный метод, для которого вы уже удерживаете блокировку. Вам нужно будет рассказать нам, что именно вы конкретно пытаетесь сделать, хотя .... много вещей с блокировкой / синхронизацией потоков, если сделано неправильно, может привести к тупику, и из вашего вопроса не совсем понятно, что Вы пытаетесь сделать.

0 голосов
/ 02 апреля 2010

Нет. нет никакого способа проверить, находится ли монитор данного объекта в состоянии ожидания в Java, или атомарный способ «проверить и захватить» блокировку объекта.

Вы можете проверить стандартный пакет java http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/package-summary.html. класс Lock имеет функциональность tryLock (), которая может пытаться получить блокировку (поэтому, если ваш поток не может захватить блокировку, он может сделать что-то еще в зависимости от возвращаемого значения tryLock ()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...