关于Actor模型的实现

15-09-10 px96004


// 在此输入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修改过]

banq
2015-09-11 09:22
Java的Actor实现:Quasar,而且是类似ErLang或Go那种纤程的。