[英]How to create a groovy actor which keeps execution unless stopped
我想創建一個繼續執行任務的Actor,然后可以通過外部調用stop來停止它,但是卻被阻塞了。
演員應該看以下
myActor = actor {
loop {
react { message ->
if(message instanceof String && "stop".equals(message))
{
stop()
}
}
}
while(true)
{
// do some work
}
}
創建完成后,可以在我的測試文件@BeforeMethod中啟動actor:
myActor.start()
它的句柄可以由主線程保留,並通過我的測試文件@AfterMethod中的以下命令停止:
myActor.send "stop"
但是,我無法超越上述方法。 首先,我發現我不需要“ myActor.start()”,@ BeforeMethod之后,它會自動運行;
其次,盡管我嘗試在測試文件的@AfterMethod中調用“ myActor.send”,但似乎從未訪問過myActor的循環{},而是繼續使用while {}。
我也嘗試將loop {}放入while {},但是它仍然無法正常工作,並且loop {}仍然沒有被調用
我有想念嗎?
謝謝!
此代碼段應向您展示如何構建代碼:
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
一些注意事項:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.