В системах с высокой степенью параллелизма может быть трудно быть уверенным, что вы используете блокировки правильно. В частности, взаимоблокировки могут возникнуть, если блокировки получены в порядке, который не ожидался при получении в надлежащем порядке в другом потоке.
Существуют инструменты (например, Coverity), которые могут выполнять статический анализ на основе кода и искать "необычные" блокировка заказов. Я хотел бы изучить другие варианты, соответствующие моим потребностям.
Существуют ли какие-либо облегченные * инструменты для инструментальной обработки кода Java, которые могут обнаруживать случаи, когда блокировки устанавливаются в порядке, отличном от ожидаемого? Я согласен с явным вызовом приказов о блокировке через комментарии / аннотации.
Предпочтительны бесплатные решения и / или решения с открытым кодом. Пожалуйста, также прокомментируйте, есть ли подходы к этой проблеме, не связанные с инструментарием.
* Для моих целей, облегчение означает ...
синхронизации
заявление. Как упоминалось ранее, я могу явно комментировать / аннотировать объекты или классы объектов, которые блокируются относительным порядком.