Грааль кварцевая-> нить - PullRequest
1 голос
/ 28 октября 2010

Это мой триггер, который вызывает 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)
    }
   }
 }

что я хотел бы сделать, это вызвать метод calc N раз в N потоков, чтобы запустить его синхронизированно. Возможно ли также обновить страницу gsp в режиме реального времени (без обновления браузера) с новыми изменениями? Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 28 октября 2010

Вы не можете ссылаться на 'm', как в этом примере.Вам нужно как-то передать совпадение в Runnable.

Здесь вы можете использовать плагин background-thread для экономии кода.

cheers

Lee

0 голосов
/ 28 октября 2010

почему бы вам просто не написать метод контроллера в вашем приложении grails и использовать javascript и ajax для обновления страницы.

Взгляните на этот плагин для периодического обновления html-страницы и вызова ajax на сервер

http://github.com/RobertFischer/JQuery-PeriodicalUpdater/

...