Play / Akka - 如果我的计划任务正在关机时会发生什么?

时间:2016-12-27 22:01:26

标签: multithreading scala playframework playframework-2.0 akka

我正在使用Runnable接口安排Akka长期运行的任务,如下所示:

pseudo-code

maxUsers = 100
currentUsers = 0



if(user_requests_login){
    if(currentUsers < maxUsers){
        logIn()
    currentUsers++
}
else
    wait_on_logout    //semaphore like wait (until currentUsersDecreases)
}

if(user_is_idle){
    logOut()            //keeping track of users info so that we can logIn again without users typing in credentials (like a cookie?)
    currentUsers--
    //another user can now logIn 
}

播放关闭时线程究竟发生了什么?我可以看到我的runnable中的代码停止执行,但是我不清楚线程在什么时候被中断以及如何在我的runnable中挂钩这个事件。我尝试在runnable中捕获InterruptedException(或任何其他),但永远不会抛出异常。什么是优雅取消线程的最佳方法?我可以在myTask上调用cancel,但这只是取消下一次计划执行。我想过将生命周期对象传递给MyRunnable,以便它可以创建一个停止钩子,但我不确定这是最好的方法。

0 个答案:

没有答案