假设一个多线程应用场景,每个线程从网络中获取一些数据(一个或多个文件),进行一些处理,然后将结果保存在宿主机的硬盘上。
在这种情况下,总是存在磁盘空间耗尽的可能性,从而导致意外的服务行为(例如,系统崩溃)。
为了避免这样的情况,如果 Java 提供了一种保留硬盘空间的方法会很有帮助,但是,正如在前面的问题中所验证的那样,这样的选项不可用,即使是这样,它也可能导致分配效率低下(例如,在解压缩应用程序的情况下,它事先不知道解压缩数据的总大小)。
因此,一种替代方法可以是进行“虚拟磁盘空间保留”,例如通过在内存中保存空闲空间的静态注册表并在继续之前让每个线程从注册表中请求容量。
有没有更好的选择,或者这种方法的改进?
是否有任何(最好是开源的)Java 库实现了这种功能?