關於Actor模型的實現

px96004發表於2015-09-10


// 在此輸入java程式碼

[/code]這兩天一直在思考Actor模型在JAVA裡是如何實現的
前提不能用鎖,因此什麼阻塞佇列,執行緒池都不要用。

但是也得至少開一個執行緒用於執行actor

這個執行緒流程差不多是這樣的

while(true){
   
    //從一個佇列裡取出一個actor來執行

    actor = queue.take();
     

    if(actor != null){
         actor.do(); //這個do 要做很多事啦,接收訊息啦,執行任務啦...差不多就是依次呼叫onXXX方法
     }
    //然後呢, 如果佇列很長時間一直為空可咋辦呢?
    //執行緒不能這麼一直死迴圈啊, sleep? sleep 多長時間呢?頻繁喚醒也不太好吧
    //就是這個地方沒有想明白, 如果用blockQueue 可以在take()的時候阻塞,但是那樣就用到鎖了。不是很理想
    //希望大牛解答,不勝感激
}
<p class="indent">

[該貼被px96004於2015-09-10 22:23修改過]

相關文章