- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个解析器,在收集一行数据后,我想触发一个 ync 函数并让它处理该行,同时主线程继续处理并获取下一行。
我看过这篇文章:How do I execute two tasks simultaneously and wait for the results in Groovy?但我不确定这是适合我情况的最佳解决方案。
我想做的是,在读取所有行之后,等待所有异步函数完成,然后再继续。使用 Promises 集合的一个问题是列表可能很大 (100,000+)。
此外,我想随时报告状态。最后,我不确定我是否要自动等待超时(比如在 get() 上),因为文件可能很大,但是,我确实希望允许用户出于各种原因终止进程。
所以我现在所做的是记录已解析的行数(因为它们是通过 rowsRead 发生的),然后使用 Promise 的回调来记录正在完成处理的另一行,就像这样:
def promise = processRow(row)
promise.whenBound {
rowsProcessed.incrementAndGet()
}
其中 rowsProcessed 是一个 AtomicInteger。
然后在工作表末尾调用的代码中,在完成所有解析并等待处理完成后,我正在这样做:
boolean test = true
while (test) {
Thread.sleep(1000) // No need to pound the CPU with this check
println "read: ${sheet.rowsRead}, processed: ${sheet.rowsProcessed.get()}"
if (sheet.rowsProcessed.get() == sheet.rowsRead) {
test = false
}
}
好的是,我这里没有大量的 Promise 对象 - 只是一个简单的计数来检查。但我不确定经常 sleep 是否与检查每个 Promise() 对象上的 get() 一样有效。
所以,我的问题是:
谢谢!
最佳答案
关于groovy - GPars 报告大量异步函数的状态并等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405806/
我有一个解析器,在收集一行数据后,我想触发一个 ync 函数并让它处理该行,同时主线程继续处理并获取下一行。 我看过这篇文章:How do I execute two tasks simultaneo
List outputBytes = [] GParsPool.withPool( ) { outputBytes = events.collectParallel{
我有一个解析器,在收集一行数据后,我想触发一个 ync 函数并让它处理该行,同时主线程继续处理并获取下一行。 我看过这篇文章:How do I execute two tasks simultaneo
我想对每个示例字符串做很多事情,并在此处返回一些其他类型的对象(整数),稍后返回一些更大的类对象。 在这个例子中,我正在尝试一些简单的事情,但我得到了完全错误的结果。至少对于我希望得到的东西。 xD
我对 GPars Actors 的理解可能有偏差,所以如果我错了请纠正我。我有一个 Groovy 应用程序,可以轮询 Web 服务以查找作业。当找到一个或多个作业时,它会将每个作业发送到我创建的 Dy
当我尝试锁定表中的一行时,有时会返回 null。那是什么意思?我验证域实例在锁定之前不为空: println state state = State.lock(state.id) println st
因此,如果我有一个看起来像这样的块: def fileTree = project.fileTree("someDir/") GPars.withPool(threads,exceptionHandl
我有一个流程,需要构建一个PDF文档,并将其与100多个正在创建的其他文档结合在一起。 我想为此多线程。我将向其中传递需要生成PDF并保存到DB的PDF事件的列表。该文档也保存到目标位置,并且路径保存
我似乎无法弄清楚如何在 Grails 中进行内存。根据 GPars 文档,它应该很简单def c = { x -> x*2 }.memoize() or ... .gmemoize() 但我似乎得到的
我正在尝试集成测试 Gorm 悲观锁,并通过多线程同时模拟来自多个服务器的访问,但在每个线程中我都没有得到预期的结果。这是我的代码: @Test void testLockInBetweenCheck
我正在做什么:我正在浏览数据库中的公司表...每个公司都有一个文本description字段,并且在该字段内可以有许多超链接(很少超过 4 个)。我想做的是使用 curl 测试这些链接的“不良”响应(
我正在 GPars 库之上构建我的并发应用程序。它在后台包含一个线程池,因此我想通过这个池解决所有与并发相关的任务。 我需要以一定的延迟(例如 30 秒)运行任务。我还想定期运行一些任务。 有什么方法
GPars 中的 Actor 有自己的消息队列(邮箱)。假设一个参与者有 15 条待处理的消息,然后系统突然宕机(比如由于电源故障)。这 15 条消息会发生什么。当系统再次启动并运行时,消息队列会自动
我使用 GPars对于执行后台任务的并行进程。我使用以下服务启动一个新的后台线程。 节省堆内存如何限制后台线程数? 如何定义一个由 n 个线程组成的线程池来处理我的后台任务? import jsr16
我想我从文档中弄错了。 我有两个 Actor ,XMLActor 和 HttpActor。 XMLActor 读取 xmlFiles,然后将消息发送到 HTTPActor 进行处理。 XMLActor
我正在尝试为 Java 和 GPars 找到一个类似的代码片段来可视化,GPars 是多么容易。 下面的代码在这两种情况下执行相同的操作吗?我不仅仅指输出,还指“内部”发生的事情。或者有没有办法进一步
我正在开发一个按比例大小的箭头图,并且有一个大小、方向和箭头大小的工作流程,但箭头有几个问题:1.它们有圆角线连接,2.即使在 type='close' 时,它们也不会关闭(请参见右下角)。 requ
在 Actors 主体中,我们需要在 loop() 方法中编写 react() 方法。我想知道这种循环方法与“for”或“while”循环有何不同? GPars 文档说“loop() 与嵌套的 rea
我有一个 Grails 应用程序,它每天午夜运行一项工作。在我的示例应用程序中,我有 10000 Person记录并在 quartz 作业中执行以下操作: package threading impo
GPars 文档说我们不应该这样做: def thumbnails = [] images.eachParallel {thumbnails << it.thumbnail} // Concurren
我是一名优秀的程序员,十分优秀!