我收到了无限的数据流作为输入,我将其写入文件" out.dat"。同时,我必须使用慢速函数process_data()处理数据。我想做的是有一个线程从文件中读取数据" out.dat"并使用process_data()处理它。因此,在主线程中,我接收输入数据并将其写入" out.dat",在第二个中我从" out.dat"中读取数据。并处理它。 (在两个线程之间不使用交换缓冲区的原因是它应该非常大,因为输入流很快并且process_data()很慢。随着时间的推移,交换缓冲区将会增长太多。)
似乎使用FileChannel是合适的。在我阅读的文档中"该类实例提供的文件视图保证与同一程序中其他实例提供的同一文件的其他视图一致。"。 但是,我不确定,因为它没有具体说明"一致"真正意思。我需要将数据写入" out.dat"然后,从另一个线程,再次读取(FileChannel#read)相同的数据。是否"一致"这意味着,一旦我写入数据,比如在位置100000,当我读取(byteBuffer,100000)时,我得到相同的数据?
我是否必须调用FileChannel#force来强制将文字保存在磁盘上?
提前谢谢。