Оглавление:
Определение - Что означает синхронизация потоков?
Синхронизация потоков - это одновременное выполнение двух или более потоков, которые совместно используют критические ресурсы. Потоки должны быть синхронизированы, чтобы избежать конфликтов использования критических ресурсов. В противном случае могут возникнуть конфликты, когда параллельно работающие потоки пытаются изменить общую переменную одновременно.
Techopedia объясняет синхронизацию потоков
Чтобы прояснить синхронизацию потоков, рассмотрим следующий пример: три потока - A, B и C - выполняются одновременно и требуют доступа к критическому ресурсу Z. Чтобы избежать конфликтов при доступе к Z, потоки A, B и C должны быть синхронизированы, Таким образом, когда A обращается к Z, а B также пытается получить доступ к Z, доступ B к Z должен быть исключен с помощью мер безопасности, пока A не завершит свою работу и не выйдет из Z.
В Java две стратегии синхронизации используются для предотвращения помех потоков и ошибок согласованности памяти:
- Синхронизированный метод: включает ключевое слово synchronized в свое объявление. Когда поток вызывает синхронизированный метод, синхронизированный метод автоматически получает встроенную блокировку для объекта этого метода и освобождает ее при возврате метода, даже если этот возврат был вызван неперехваченным исключением.
- Синхронизированный оператор: объявляет блок кода для синхронизации. В отличие от синхронизированных методов, синхронизированные операторы должны указывать объекты, которые обеспечивают внутреннюю блокировку. Эти операторы полезны для улучшения параллелизма с мелкозернистой синхронизацией, поскольку они позволяют избежать ненужной блокировки.
