ОК, возьмите мой ответ с крошкой соли (я не эксперт NIO)
1.) putInt(i, i)
запишет в MappedByteBuffer (mbb), который находится в памяти и в операционнойСистема передает это значение в фактический базовый файл (test.map
), когда она этого хочет.
Использование force()
сообщает операционной системе о необходимости передачи данных «сейчас» (что может быть полезно, если у вас естьдругой процесс, который должен читать из этого файла).
Ваш getInt(i)
читает значение из MappedByteBuffer (mbb), если вы используете force()
так, как вы, то вы знаете, что подВаш файл синхронизирован с этим буфером памяти).
Скорее всего, вам не нужно использовать force()
2.) Не уверен, я думаю это как Java 7 NIO.2 начинает ссылаться на возможность делать такие вещи неблокирующим образом.Я все еще исследую это в данный момент.
3.) Это две отдельные проблемы.Я бы посоветовал взглянуть на книгу Дуга Ли: -).
4.) Как указано в 1.), force () скажет ОС писать «сейчас», иначе ОС пишет, когда чувствуетнравится.