Да, в Java можно заблокировать объект для эксклюзивного использования потоком. Это делается с помощью ключевого слова synchronized, которое гарантирует, что только один поток может получить доступ к ресурсу одновременно.
Когда поток получает блокировку объекта, используя synchronized блок, этот объект становится недоступным для всех остальных потоков. Только поток, который держит блокировку, может выполнить синхронизированный код и получить доступ к защищённому ресурсу.
Самый распространённый подход — использование synchronized блока:
synchronized(objectLock) {
// Только один поток может выполнить этот код одновременно
// Получай доступ к общим ресурсам здесь
}
Альтернативно, ты можешь использовать ключевое слово synchronized на методах:
public synchronized void criticalMethod() {
// Синхронизация на уровне метода
}
java.util.concurrent, такие как ReentrantLock или ReadWriteLockКаждый объект в Java имеет встроенную блокировку, и когда поток входит в synchronized блок для этого объекта, другие потоки всё ещё могут читать поля объекта без получения блокировки.
Новый — ещё не проверен сообществом
Вы