我想创建一个继续执行任务的Actor,然后可以通过外部调用来停止,但是被阻止了。
演员应该看下面的
myActor = actor {
loop {
react { message ->
if(message instanceof String && "stop".equals(message))
{
stop()
}
}
}
while(true)
{
// do some work
}
}
创建之后,可以通过我的测试文件@BeforeMethod启动演员:
myActor.start()
它的句柄可以由主线程保存,并通过我的测试文件中的下面命令停止,@ AfterMethod:
myActor.send "stop"
然而,我无法通过以上方法工作。首先,我发现我不需要“myActor.start()”,在@BeforeMethod之后,它只是自动运行;
其次,虽然我试图在我的测试文件的@AfterMethod中调用“myActor.send”,但看起来myActor的循环{}似乎永远不会被访问并继续使用while {}。
我还尝试将循环{}放入while {},但它仍然不起作用且循环{}仍未被调用
我错过了什么吗?
谢谢!
答案 0 :(得分:0)
此代码段应显示如何构建代码:
def myActor = Actors.actor {
loop {
react { message ->
if(message instanceof String && "stop".equals(message))
{
stop()
}
}
}
}
myActor.metaClass.afterStop = {
while(true)
{
// do some work
println "After finished"
return
}
}
myActor.send "stop"
sleep 5000
一些注意事项: