Ответ
synchronized — это ключевое слово в Java/Kotlin для управления доступом к общему ресурсу в многопоточной среде.
Пример:
class Counter {
private var count = 0
@Synchronized // Аннотация для метода (Kotlin)
fun increment() {
count++
}
// Или через synchronized-блок (Java/Kotlin)
fun decrement() {
synchronized(this) {
count--
}
}
}
Нюансы:
- Работает только в пределах одного процесса (не подходит для межпроцессного взаимодействия).
- Может привести к блокировкам (deadlocks), если неправильно спроектирован.
- В Kotlin предпочтительнее использовать
Mutexиз корутин или другие высокоуровневые механизмы.
Альтернативы: ReentrantLock, Atomic-классы, корутины с Mutex.