Я услышал, что желание использовать слово, 'синхронизируемое' для описания mutexed операторов, является просто ошибкой (Редактирование: 'ошибка' была плохим выбором слов здесь. Посмотрите редактирование) в Java, но я задаюсь вопросом, существует ли на самом деле причина позади выбора.
[Править]
Подталкивавший комментариями Safyan, я хотел бы добавить, что синхронизация является общим термином для установления зависимости по синхронизации между потоками. Это может включать взаимное исключение и вещи как управление уровнем (например, два потока, делающие что-то на том же уровне). Это кажется излишне неоднозначным для использования, 'синхронизировался' для значения взаимного исключения вместо более определенного ключевого слова как 'mutexed'.
Использование ключевого слова synchronized вместо мьютекса на самом деле является хорошим способом выражения этого термина. С мьютексом мы ничего не понимаем, но ключевое слово synchronized говорит само о себе. Synchronized помещается в код, который на самом деле должен быть синхронизирован между потоками, которые все хотят получить доступ к этому коду. Вот почему это называется синхронизированным.
Это не ошибка. Это означает то, что он говорит; код должен синхронизироваться с другими потоками, чтобы обеспечить взаимное исключение. Фактически, термин «синхронизированный» может иметь больше смысла, чем «мьютекс», поскольку «мьютекс» подразумевает очень конкретный тип примитива синхронизации, а ключевое слово synchronized может быть реализовано с использованием любого количества примитивов синхронизации потоков (проверка и установка с активным опросом, семафоры и т. д.).
Ключевое слово synchronized используется для получения и снятия блокировки монитора. Как и мьютексы, мониторы используются для управления параллелизмом, но это не одно и то же.
Само по себе использование synchronized не является ошибкой, но это может быть низкоуровневая конструкция для использования с многопоточностью, а неправильное использование может быстро привести к ошибкам многопоточности.