加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Grails中的异步编程

发布时间:2020-12-14 16:27:45 所属栏目:大数据 来源:网络整理
导读:我在Grails应用程序中使用Servlet 3.0异步渲染.我收到以下错误. | Error 2014-04-29 11:10:24,125 [Actor Thread 28] ERROR gpars.LoggingPoolFactory - Async execution error: nullMessage: null Line | Method- 61 | doCall in org.grails.async.factory.
我在Grails应用程序中使用Servlet 3.0异步渲染.我收到以下错误.

| Error 2014-04-29 11:10:24,125 [Actor Thread 28] ERROR gpars.LoggingPoolFactory  - Async execution error: null
Message: null
    Line | Method
->>   61 | doCall    in org.grails.async.factory.gpars.GparsPromise$_onComplete_closure1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     62 | run       in groovyx.gpars.dataflow.DataCallback$1
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    724 | run . . . in java.lang.Thread

请帮我解决这个问题.

这是守则

//Promise 1
    Promise p1 = task {
        println id+" p1 Task is Runing"
        sleep(4000) 
        println id+" p1 Thread Woke Up"
        return "p1Completed"
    }

    //Promise 2
    Promise p2 = task {
        println id+" p2 Task is Runing"    
        sleep(4000)
        println id+" p2 Thread Woke Up"
        return "p2Completed"
    }
    p1.onComplete { result ->
        println id+" Promise p1 Completed returned "+result  
    }
    p1.onError { Throwable err ->
        println id+" p1 An error occured ${err.message}"
    }
    p2.onComplete { result ->
        println id+" Promise p2 Completed returned "+result
    }
    p2.onError { Throwable err ->
        println id+" p2 An error occured ${err.message}"
    }

解决方法

您需要在代码底部添加以下行:

p1.get()
p2.get()

这将阻止请求,直到两个承诺都完成.如果要运行异步任务并在不同步等待响应的情况下结束请求,则需要使用java executor框架.检查这个问题:Error on async job

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读