首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Apache IO Java实现多线程拷贝IO操作

用Apache IO Java实现多线程拷贝IO操作
EN

Stack Overflow用户
提问于 2013-03-18 14:21:27
回答 1查看 622关注 0票数 2

我正在开发一个类似于压缩实用程序的东西,这是在一个主要项目中所需的。

实用程序所做的就是接受用户的请求,并开始复制所需的所有文件以生成一个zip文件,最后将该zip文件提供给用户下载。

现在的问题是,当多个用户发送请求时,实用程序会启动一个单独的线程(最多可以是定义的线程数的最大限制)。实用工具开始并行复制,并且变得非常慢,就像不可用一样。

我需要一种方法来解决这个或任何方法,以便并行复制应该足够快。

我使用Apache commons io进行复制,使用Zip4j库进行压缩。

请提个建议。

EN

回答 1

Stack Overflow用户

发布于 2013-03-18 17:02:45

代码语言:javascript
复制
if (!isFresh) {
    ArrayList<String> foldersNamesToBeZipped =
            GeneralInfoDownload.getFilesToDownloadForWorkstep(this.map.get("DEPARTMENT"));
    ArrayList<File> folderFilesToBeZipped = new ArrayList<File>();

    for (String name : foldersNamesToBeZipped) {
        folderFilesToBeZipped.add(new File(MasterPath + System.getProperty("file.separator") + name));
    }

    log.info("****************Copying start TimeStamp***************" + this.map.get("JID"));
    TDFileUtil.copyFilesToDirectory(folderFilesToBeZipped,
           new File(toPcFolder.getAbsolutePath() + File.separator
           + "NEW_ORIGNALS"));
    }
}

GeneralInfoDownload.getFilesToDownloadForWorkstep函数获取所有要压缩和下载的文件。

内部的TDFileUtil.copyFilesToDirectory函数使用Apache commons方法copyDirectoryToDirectorycopyFileToDirectory

当只有一个或两个请求时,这很好用,但当多个请求排成一行时,它会变得很慢。

这是意料之中的,但是否有任何性能提升可以做到。(我的意思是它只是可以容忍的。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15470815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档