Замок на основе файлов для управления только для чтения или доступа к чтению-записи к файлу или каталогуJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Замок на основе файлов для управления только для чтения или доступа к чтению-записи к файлу или каталогу

Сообщение Anonymous »

Я пишу плагин Kotlin/JVM Gradle, который хранит данные в каталоге приложений-кэш, поэтому данные могут использоваться в отдельных проектах. Мне нужно убедиться, что содержимое не модифицировано во время их использования. Я в основном внедряю пользовательский диспетчер инструментов. Мне просто нужен инструмент для внутреннего использования. Я хочу разрешить одновременный доступ только для чтения. Модификация может быть выполнена как часть задачи или во время действия настройки конфигурации. Замки только для чтения должны быть приоритетными. Но это не необходимо строго. java.nio.channels.filelock , который поддерживает перекрестную блокировку. Тем не менее, это не поддерживает блокировку в том же процессе JVM. См. FileLock Javadoc: < /p>

блокировки файлов хранятся от имени всей виртуальной машины Java. Они не подходят для управления доступом к файлу с помощью нескольких потоков в одной и той же виртуальной машине. Подходит. < /p>
Я подумал, что, возможно, эти два могут быть объединены: использование FileLock для межпроцессного исключения и повторного залога для координации внутрипроцессов, но это вызвало тупики из-за непоследовательного порядок получения блокировки. Замок должен быть доступен на этапе конфигурации, а также через совершенно разные сборки Gradle (например, несколько независимых сборков, запущенных на CI). < /p>
Внешние библиотеки < /h5>
Наиболее близкая реализация, которую я обнаружил,-это утилита внутренней границы (filelockmanager), которая использует сетевые коммерциалы, когда они будут предоставлены, когда они будут предоставлены, когда они дают контакты. Тем не менее, я не могу использовать его, потому что это внутреннее. Если бы была библиотека C, возможно, я мог бы взаимодействовать с ней. < /P>
Требования < /h4>
  • Заблокировать файл, через потоки и процессы, чтобы предотвратить одновременную модификацию. < /Li>
    Правильное и точное поведение предпочтительнее производительности. одновременные читатели.
  • Только один писатель, и нет читателей, пока писатель держит замок.
  • Автор ждет, пока все читатели не закончатся. /> < /li>
    kotlin /jvm с использованием Java 17. < /li>
    Работает надежно на Linux, MacOS и Windows (но необходимо работать только на одной машине за один раз, без сетевой помощи). < /li>
    Невозможно использовать внешние процессы, чтобы они не могли управлять, но не могут быть связаны с ними, но не могут быть связаны с ними. это, они должны быть легкими, можно затенять (чтобы избежать загрязнения Gradle BuildScript ClassPath).


Подробнее здесь: https://stackoverflow.com/questions/795 ... -directory
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»