Apache Commons VFS线程安全和资源管理

时间:2013-08-08 19:51:59

标签: vfs apache-commons-vfs

我正在考虑将Apache Commons VFS用于需要通过ftp,sftp和https在本地服务器和远程服务器之间传输文件的项目。

标准用法示例是从静态方法获取FileSystemManager

FileSystemManager fsManager = VFS.getManager();

跨多个线程使用相同的FileSystemManager是否安全?

第二个问题是关于在finally块中正确释放资源:我在Javadoc API中找到以下方法:

但我不清楚哪些资源通常应该关闭。

2 个答案:

答案 0 :(得分:1)

文件管理器和文件系统对象应该是线程安全的,但是我不打算把它活在上面。一些内部锁定(特别是围绕重命名)依赖于FileObject的实例,所以你不应该使用不保留它们的FileCache(即默认缓存很好)。

不应同时使用FileContent和流(事实上,FileContent.close()仅作用于当前线程的流)。

此区域存在一些资源泄漏(希望所有资源都在2.1-SNAPSHOT中修复)。

答案 1 :(得分:0)

VFS.getManager提供单个管理器即。单一访问文件系统,所以我不建议从多线程环境中使用它。您可以创建自己的DefaultFileSystemManager并在完成后使用close方法。