FileLock из java.nio.channels — это инструмент для предотвращения одновременного изменения файла несколькими процессами или потоками. Если ваше приложение работает с общими файлами, FileLock помогает избежать конфликтов. 🔍 Что нужно знать о FileLock?
1️⃣ Поддерживает эксклюзивные и разделяемые блокировки.
2️⃣ Может работать с любыми типами файлов: текстовыми, бинарными и т.д.
3️⃣ Совместим с каналами
FileChannel. 📌 Пример использования FileLock:
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class FileLockExample {
public static void main(String[] args) {
try (RandomAccessFile file = new RandomAccessFile("example.txt", "rw");
FileChannel channel = file.getChannel()) {
// Устанавливаем блокировку
FileLock lock = channel.lock();
System.out.println("Файл заблокирован.");
// Выполняем операции
file.writeBytes("Добавляем данные, пока файл заблокирован...\n");
// Освобождаем блокировку
lock.release();
System.out.println("Файл разблокирован.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
🔗 Ключевые особенности:
1️⃣ Эксклюзивная блокировка:
channel.lock() — блокирует файл для всех, кроме текущего процесса. 2️⃣ Разделяемая блокировка:
channel.lock(start, size, true) — доступна только для чтения. 3️⃣ Блокировки не являются межпотоковыми; они работают на уровне процесса.
✨ Когда использовать?
- Для работы с общими ресурсами в распределённых приложениях.
- Для предотвращения одновременной записи в файл несколькими процессами.
- Для контроля доступа к критически важным данным.
💡 Совет: Всегда освобождайте блокировку (
lock.release()), чтобы другие процессы могли получить доступ к файлу. #Java #FileLock #nio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2