Я создал веб-приложение, которое работает с FLV-файлами.
Это приложение использует библиотеку, которую я создал для анализа содержимого файлов flv. Эта библиотека использует FileChannel для поиска файла.
У меня странное поведение, когда я ищу один и тот же файл FLV из разных потоков. Предположим, что Thread_1 и Thread_2 одновременно ищут movie.flv (мой вопрос следует за примером).
Thread_1
// Thread_1 moves to position 200 to read something
FileChannel chan1 = new FileInputStream("movie.flv").getFileChannel();
chan1.position(200);
Thread_2 (выполняется сразу после Thread_1 )
// Thread_2 moves to position 600 to read something else
FileChannel chan2 = new FileInputStream("movie.flv").getFileChannel();
chan2.position(600);
Наконец Thread_1 делает:
ByteBuffer bb = ByteBuffer.allocate(40);
chan1.read(bb);
Thread_1 читает 40 байтов из позиции 200 или из позиции 600?
Точнее, являются chan1 и chan2 независимыми (= могут искать независимо) каналами или нет?
Из документации я прочитал, что FileChannel уникален , поэтому моя ставка (к сожалению) заключается в том, что в примере Thread_1 будет читать с позиции 600: \
В случае, если вы можете предложить другой подход для поиска файла независимо от разных потоков?
спасибо!