Комментарии 5
Очень странно, что в статье об атомарном многопоточном доступе к счётчику совсем не упоминается java.util.concurrent.atomic и AtomicInteger из этого пакета
вы заметите, что результат каждый раз разный и почти всегда меньше 200 000.
звучит как будто он иногда может быть и больше 200_000
Говоря про ReentrantLock я бы еще добавил, что у него есть свойство fair - если его выставить, то, например, в случае двух потоков, они будут хватать монитор поочереди (что удобно, когда стоит задача типа "заставь ноги шагать поочереди")
Также у ломбока есть аннотация Synchronized - уж можно было бы и про нее сказать, чем она лучше/хуже
Берем из всей многогранность работы с Java threads и набора инcтрументов для синхронизации один очень частный случай и опс... статья готовая. Примитивная до нельзя.
Зачем я вообще это читал и открыл..
Сама долго пользовалась только synchronized. Когда нужно не ждать, а идти дальше или логировать - Lock реально выручает. Но удобнее автоматическое освобождение synchronized. В новых версиях Java synchronized действительно не уступает по скорости, а если нужна гибкость - Lock, если просто защитить данные - хватит synchronized.

Взаимное исключение в Java: от synchronized к Lock