Является ли FileChannel.position() потокобезопасным?
Безопасно ли писать из разных потоков в один файл, используя FileChannel.position()
? Это необходимо для многочастной загрузки. Каждая нить будет записывать свою позицию в файле, т.е. позиции нити не будут пересекаться.
2 ответа
Решение
Несмотря на то, что индивидуальная опция является поточно-ориентированной, она не является локальной, и ее изменение будет видно всем потокам.
Самый простой вариант - создать FileChannel для каждого потока, чтобы избежать каких-либо взаимодействий, если только вы не записываете в файл, и в этом случае эти изменения можно увидеть.
В FileChannel
Документация, это говорит:
Файловые каналы безопасны для использования несколькими параллельными потоками.