gpt4 book ai didi

multithreading - FileTree文件的异步操作?

转载 作者:行者123 更新时间:2023-12-03 03:06:54 25 4
gpt4 key购买 nike

有什么方法可以让我轻松地在Gradle任务中以智能方式处理FileTree文件?我基本上需要等待所有文件的执行,就像使用GPar可以执行的操作一样,但是如何使用FileTree进行此处理呢?

task compressJs(dependsOn: [copyJsToBuild]) << {
println 'Minifying JS'

fileTree {
from 'build/js'
include '**/*.js'
}.visit { element ->
if (element.file.isFile()) {
println "Minifying ${element.relativePath}"
ant.java(jar: "lib/yuicompressor-2.4.6.jar", fork: true) {
arg(value: "build/js/${element.relativePath}")
arg(value: "-o")
arg(value: "build/js/${element.relativePath}")
}
}
}
}

如果我可以做类似 .visit{}.async(wait:true)的事情,那会很可爱,但是我的谷歌搜索什么都没有。有没有一种方法可以使我轻松地实现多线程?一个元素的处理对任何其他元素的处理都没有影响。

最佳答案

在考虑使用多线程之前,我将尝试以下方法:

  • 在同一个JVM中运行所有内容。为每个输入文件派生一个新的JVM效率很低。
  • 使compressJs任务递增,以便仅在自上次运行以来某些输入文件已更改的情况下执行。
  • 直接而不是通过Ant运行Minifier(为每个输入文件节省创建新的类加载器;不确定是否重要)。

  • 如果这仍然使您对性能不满意,并且无法使用性能更高的压缩程序,则仍然可以尝试使用多线程。 Gradle尚无法为您提供帮助,但是GPars或Java Fork/Join框架之类的库将为您提供帮助。

    关于multithreading - FileTree文件的异步操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264927/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com