Почему синхронизированное ключевое слово в Java называется "синхронизированным", а не более точным "mutexed"?
Я слышал, что выбор слова "синхронизированный" для описания мьютексированных утверждений - это просто ошибка (Edit: "error" был плохим выбором слов здесь. См. редактирование) на Java, но мне интересно если на самом деле есть причина выбора.
[изменить]
Подставляя комментарии Safyan, я хотел бы добавить, что синхронизация является общим термином для установления временных отношений между потоками. Он может включать взаимное исключение и такие вещи, как контроль скорости (например, две нити, делающие что-то с той же скоростью). Не обязательно двусмысленно использовать "synchronized" для обозначения взаимного исключения вместо более конкретного ключевого слова, например "mutexed".
Ответы
Ответ 1
Это не ошибка. Это означает, что он говорит; код должен синхронизироваться с другими потоками, чтобы обеспечить взаимное исключение. И, по сути, термин синхронизированный может иметь больше смысла, чем "мьютекс", поскольку "мьютекс" подразумевает очень специфический тип примитива синхронизации, а синхронизированное ключевое слово может быть реализовано с использованием любого количества примитивов синхронизации ниток (test & set with active опрос, семафоры и т.д.).
Ответ 2
Синхронизированное ключевое слово используется для получения и освобождения блокировки на мониторе. Как и мьютексы, мониторы используются для управления concurrency, но они не совпадают.
Использование синхронизации в себе не является ошибкой, но может быть низкоуровневой конструкцией для использования с многопоточным доступом, а неправильное использование может быстро привести к многопоточным ошибкам.
Ответ 3
Использование синхронизированного ключевого слова вместо мьютекса на самом деле является хорошим способом выражения этого термина. Посредством mutex мы не очень понятны, но само синхронизируемое ключевое слово говорит о себе. Синхронизированный помещается в код, который фактически должен быть синхронизирован между нитями, которые все хотят получить доступ к этому коду. Вот почему это называется синхронизированным.