所以,我试图用Java对zip文件进行只读访问,以多线程方式解压缩,因为我使用枚举和输入流的ZipFile/ZipEntry的标准简单单线程解决方案和什么不导致它采取大约五个完整的秒钟,只需要将一个50兆的zipfile解压缩到内存中,这需要一秒钟的AT MOST让我的磁盘无需解压缩即可读取.
然而,整个Java zip库被同步到令人难以置信的令人讨厌的程度,毫无疑问,因为它完全被抽象用于读/写等.在相同的代码中,而不是具有良好的有效非同步只读代码.
我看过第三方Java库,它们都是大型的VFS库,比使用大象枪射击苍蝇更糟糕,或者它们具有性能优势的唯一原因是它们多线程到达无论如何,大多数线程都在磁盘IO上阻塞.
我想要做的就是将zipfile拉入byte [],分叉一些线程,然后处理它.没有理由以任何方式对任何事情进行任何同步,因为我在内存中单独使用的每个解压缩文件没有交互.
为什么一定要这么难?