Почему ключевое слово synchronized в Java называется «synchronized» вместо более точного «mutexed»? - PullRequest
10 голосов
/ 27 апреля 2010

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

[Изменить]

Под влиянием комментариев Сафьяна я хотел бы добавить, что синхронизация - это общий термин для установления временных отношений между потоками. Он может включать взаимное исключение и такие вещи, как управление скоростью (например, два потока делают что-то с одинаковой скоростью). Кажется излишне неоднозначным использовать «синхронизированный» для обозначения взаимного исключения вместо более конкретного ключевого слова, такого как «мьютекс».

Ответы [ 3 ]

7 голосов
/ 27 апреля 2010

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

0 голосов
/ 27 апреля 2010

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

0 голосов
/ 27 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...