Несколько потоков Вставка строк в таблицу в Grails
Я пытаюсь вставить несколько строк данных в таблицу с помощью многопоточной программы в стандартном приложении Groovy-Grails. Приложение использует стандартные объекты GORM для взаимодействия с базой данных. Каждый поток вставляет различный набор строк. Я использую ExecutorService и FixedThreadPool в службе Grails, которая вызывает класс Runnable Groovy. Класс Runnable запрашивает БД, выполняет много вычислений и вставляет полученные значения в таблицу. Я сталкиваюсь со следующим исключением.
`Error java.lang.NullPointerException
Error at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
Error at org.codehaus.groovy.grails.orm.support.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:85)
Вот класс Runnable.
@Transactional
class MyRunnable{
def aService
def bService
def run(){
for (i=1; i<n; i++){//n is a finite integer
def x = aService.doSomething()
def y = bService.doSomething(x)
AGormClass.addToBGormClass(y)
}
AGormClass.save flush:true
}
}
Вот служба Grails, которая инициализирует пул потоков и вызывает класс Runnable.
@Transactional
class SvcClass{
ExecutorService exeSvc = Executors.newFixedThreadPool(2)
MyRunnable runnable = new MyRunnable()
exeSvc.execute(runnable as Runnable)
exeSvc.shutdown()
}