Подтвердить что ты не робот

Почему синхронизированное ключевое слово в Java называется "синхронизированным", а не более точным "mutexed"?

Я слышал, что выбор слова "синхронизированный" для описания мьютексированных утверждений - это просто ошибка (Edit: "error" был плохим выбором слов здесь. См. редактирование) на Java, но мне интересно если на самом деле есть причина выбора.

[изменить]

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

4b9b3361

Ответ 1

Это не ошибка. Это означает, что он говорит; код должен синхронизироваться с другими потоками, чтобы обеспечить взаимное исключение. И, по сути, термин синхронизированный может иметь больше смысла, чем "мьютекс", поскольку "мьютекс" подразумевает очень специфический тип примитива синхронизации, а синхронизированное ключевое слово может быть реализовано с использованием любого количества примитивов синхронизации ниток (test & set with active опрос, семафоры и т.д.).

Ответ 2

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

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

Ответ 3

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