Встречается на собеседованиях • сегодня

Когда монитор будет передавать файл библиотеке при многопоточной работе с файлами

В Java монитор (intrinsic lock) передаст управление файлом библиотеке при многопоточной работе, когда поток войдет в синхронизированный блок или метод. Для работы с файлами рекомендуется:

  1. Использовать synchronized блоки:
java
synchronized(lockObject) {
    // операции с файлом
}
  1. Либо синхронизированные методы:
java
public synchronized void writeToFile() {
    // запись в файл
}

Критические моменты:

  • Один поток получает доступ к файлу за раз
  • После выхода из синхронизированного блока монитор освобождается
  • Для чтения лучше использовать ReentrantReadWriteLock чтобы разрешить множественное чтение
  • В Java NIO есть FileChannel.lock() для файловых блокировок

Пример с ReentrantReadWriteLock:

java
ReadWriteLock rwLock = new ReentrantReadWriteLock();
rwLock.readLock().lock(); // для чтения
rwLock.writeLock().lock(); // для записи
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы