我正在使用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,以便它可以创建一个停止钩子,但我不确定这是最好的方法。