虽然Groovy中启动一个线程已经很容易了,但是在grails中,使用 Thread.start 启动线程并进行数据库操作时,使用不当的话可能会导致事务问题,因此建议用 executer 插件(BroToolkit自带)来启动线程。
// 可以在控制器、服务、Domain类中直接使用 runAsync 来创建线程
runAsync {
...
}
// 如果不在上述三种类中,可以随便借用一下,比如:
new Employee().runAsync {
...
}
// 或者:
BeanUtils.getBean("executorService").submit({
...
} as java.util.concurrent.Callable)