这是我调用matchService的触发器......
class TestJob {
def matchService
static triggers = {
cron name: 'firstThread', cronExpression: "0 0/1 12-13 ? * THU"
}
def group = "threadGroup"
def execute() {
matchService.playMatch()
println "run thread: " + String.format('%tH:%<tM:%<tS.%<tL',System.currentTimeMillis())
}
}
...这是名为
的服务class MatchException extends RuntimeException {
String message
Match match
}
class MatchService {
/*
* Rolls back database changes if errors occur
*/
static transactional = true
public void calc(Match m) {
println m.teamH.name + " - " + m.teamA.name
}
public playMatch() {
List<Match> matchList = new ArrayList()
Cal.get(1).matches.each{
match ->
matchList.add(match)
}
for(Match m: matchList) {
if(!m.validate()) {
throw new MatchException( message: "match not valid!!" , match:m)
}
calc(m)
}
}
}
我想做的是在N个线程中调用方法calc N次以运行synchronized。 是否也可以使用新更改实时更新gsp页面(无需刷新浏览器)? 有人可以帮帮我吗?
答案 0 :(得分:0)
为什么不在grails应用程序中编写控制器方法并使用javascript和ajax来更新页面。
看一下这个插件,定期用ajax调用服务器来更新html页面
答案 1 :(得分:0)
你不能像在那个例子中那样引用'm'。你需要以某种方式将匹配传递给Runnable。
这是您可以使用background-thread插件为您节省编码的地方。
欢呼声
利