Dav*_*ave 5 java io multithreading
我的工作,最终将一个应用程序服务器中使用访问一些真正的大文件的一些Java代码(超过1GB,20GB下),可能托管在NFS共享.处理个人请求将涉及这样做:
我有一些快乐的简单POC代码,只需打开一个新的只读文件并关闭它:
RandomAccessFile raf=new RandomAccessFile(myFileName, "r");
try{
byte[] buffer = new byte[size];
raf.seek(position);
raf.reafFully(buffer);
return buffer;
}
finally{
raf.close();
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是一个优雅简单的方法,应该工作得很好,或者是一个愚蠢的简单方法,在繁重的负载下会遇到很多问题(也许我需要建立一个线程安全的读者池等).显然测试这个假设是最好的,但我想知道这两种方法是否有任何最佳实践或已知问题.到目前为止,我还没有弄清楚谷歌搜索...
谢谢!
PS.目前尚不清楚最终版本是否将托管在Windows或*nix上.目前还不清楚如何共享大文件.PPS.应用程序服务器可能在群集中配置,因此两个不同的应用程序服务器可能需要同时读取同一个大型共享文件.
另一个选择是java NIO,即FileChannel。FileChannel 也是可导航的,并且可能比 RandomAccessFile 更快,因为它可以与所谓的直接缓冲区一起使用。它有一些更有趣的功能,例如它是可中断的。
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |