gpt4 book ai didi

服务内部的 Grails Quartz 和线程

转载 作者:行者123 更新时间:2023-12-02 14:45:30 26 4
gpt4 key购买 nike

我有一个关于 Quartz 和在 Service 类中运行线程的问题。

我已经回答了我之前的问题:Grails background process ,但是我还有另一个问题。

设置:我有一个设置为运行服务的作业,它运行良好。但是在服务类中,我有一个可以并行运行的算法。

问题:通常,我会以以下非常简单的方式将代码设置为并行运行:

Item.each {
Thread.start {
do some calculations here
write to DB
}
}

但是,由于我的代码需要写入数据库并且我需要利用域类,因此我的代码会刹车。 Hibernate 提示线程无权访问某些东西。

我不确定为什么我不能在 Service 类中使用线程并利用域类。有人可以帮我解决这个难题吗?
我需要以特殊方式创建线程吗?可能我不应该在 Service 类中创建线程(因为 Service 类似乎在线程中运行)?我需要将我的代码移动到 Job 类中吗?

请帮忙。

谢谢你。

最佳答案

默认情况下,新线程不会绑定(bind) Hibernate Session。要附加休眠 session ,请尝试以下操作:

Item.each {
Thread.start {
Item.withTransaction {
do some calculations here
write to DB
}
}
}

您也可以查看 GPars一个易于使用的并行化框架。

关于服务内部的 Grails Quartz 和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12344798/

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