То, почему синхронизируемое ключевое слово в Java названо, 'синхронизировалось' вместо более точного 'mutexed'?

Я услышал, что желание использовать слово, 'синхронизируемое' для описания mutexed операторов, является просто ошибкой (Редактирование: 'ошибка' была плохим выбором слов здесь. Посмотрите редактирование) в Java, но я задаюсь вопросом, существует ли на самом деле причина позади выбора.

[Править]

Подталкивавший комментариями Safyan, я хотел бы добавить, что синхронизация является общим термином для установления зависимости по синхронизации между потоками. Это может включать взаимное исключение и вещи как управление уровнем (например, два потока, делающие что-то на том же уровне). Это кажется излишне неоднозначным для использования, 'синхронизировался' для значения взаимного исключения вместо более определенного ключевого слова как 'mutexed'.

10
задан Edward D'Souza 27 April 2010 в 07:35
поделиться

3 ответа

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

0
ответ дан 4 December 2019 в 02:49
поделиться

Это не ошибка. Это означает то, что он говорит; код должен синхронизироваться с другими потоками, чтобы обеспечить взаимное исключение. Фактически, термин «синхронизированный» может иметь больше смысла, чем «мьютекс», поскольку «мьютекс» подразумевает очень конкретный тип примитива синхронизации, а ключевое слово synchronized может быть реализовано с использованием любого количества примитивов синхронизации потоков (проверка и установка с активным опросом, семафоры и т. д.).

7
ответ дан 4 December 2019 в 02:49
поделиться

Ключевое слово synchronized используется для получения и снятия блокировки монитора. Как и мьютексы, мониторы используются для управления параллелизмом, но это не одно и то же.

Само по себе использование synchronized не является ошибкой, но это может быть низкоуровневая конструкция для использования с многопоточностью, а неправильное использование может быстро привести к ошибкам многопоточности.

0
ответ дан 4 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: