我有一個關於石英和服務類內運行線程的問題。Grails石英和線內服務
我得到我以前的問題回答:Grails background process,但我有另一個問題。
設置:我有一個設置爲運行服務的作業,它的工作原理完美。然而,在一個Service類中,我有一個可以並行運行的算法。
問題:通常我會設置代碼並行在下面很簡單的方式運行:
Item.each {
Thread.start {
do some calculations here
write to DB
}
}
然而,由於我的代碼需要寫入數據庫,我需要利用域類和那點我的代碼剎車。 Hibernate抱怨線程無法訪問某些東西。
我不確定爲什麼我不能使用Service類中的線程並利用域類。有人可以幫助我解決這個難題嗎? 我是否需要以特殊方式創建線程?可能我不應該在Service類中創建線程(因爲Service類似乎在線程內運行)?我是否需要將我的代碼移到Job類中?
請幫忙。
謝謝。
嘗試在看看執行人插件和包裹呼叫與服務:runAsync {service.serviceMethod()} – Steve
進一步什麼@Steve說,在默認情況下,新的線程*不*有一個Hibernate會話連接(這是需要使用休眠) - 因此你看到的錯誤。執行器插件管理你的連接休眠會話(事實上,石英插件也是如此)。 –