elC*_*ano 3 grails groovy multithreading
在grails控制器中,启动一个新线程(任务/承诺).但是当我尝试在线程中获取它时,用户为null.
if(springSecurityService.currentUser){
task {
// do something with the current user
// springSecurityService.currentUser is null here!!!!!!
}.get()
}
Run Code Online (Sandbox Code Playgroud)
如何将用户作为参数传递给任务?
问题不在于"线程是在用户离开控制器之后启动的",而是springSecurityService.currentUser
线程本地状态,当从不同线程调用时,它会为您提供不同的值.但是,如果你保存该线程的价值的springSecurityService.currentUser
一个局部变量,你应该能够访问瓶盖内:
if(springSecurityService.currentUser){
def theUser = springSecurityService.currentUser
task {
// do something with theUser
}.get()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
791 次 |
最近记录: |