Grails和多线程处理

3
我有一个Grails应用程序,需要触发一个占用CPU资源的进程。我考虑创建一个服务,生成多个线程进行相同的计算,但使用随机数据以便稍后比较结果。这种方式安全吗?有什么建议或经验可以分享吗? 谢谢。
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4
您可能遇到的最大问题是,您创建的任何线程都不会自动附加一个Hibernate会话。因此,如果您需要对域执行任何操作,您需要手动连接。我曾经研究过这个问题,它是可行的,但最终我选择了另一种方法,所以没有一个完成的示例来讨论。 我认为还有一些插件可用,比如Background Thread插件,它将为您生成一个线程并附加适当的Hibernate内容。但我不确定该插件是否仍在维护中,因此可能无法在1.3或更高版本上使用。 您还可以通过使用withTransaction在您的线程中实例化有效的事务:
MyDomain.withTransaction { status ->
    // GORM stuff that needs a valid transaction
}
请注意,每个线程都将拥有自己的事务,并且它不会参与其他线程相同的事务(因此如果一个线程失败,您将无法回滚所有内容)。

1

<插入>

碰巧地,我现在正在审查《Groovy实战》第二版的第17章(也就是说,我已经打开了Word文档,每当我没有在此处发布时,我就在编辑它)。该章节概述了Groovy的并发性能 - 它没有明确提到Grails,但我怀疑这对您可能想使用的内容影响不大。第17章已经在早期访问的“MEAP”版本中提供了...

</插入>

无论如何,我自己没有使用Groovy的并发经验,但听起来你应该看看GPars


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,