关于Actor模型的实现

px96004 15-09-10
    



// 在此输入java代码
[/code]这两天一直在思考Actor模型在JAVA里是如何实现的
前提不能用锁,因此什么阻塞队列,线程池都不要用。

但是也得至少开一个线程用于执行actor

这个线程流程差不多是这样的

while(true){

//从一个队列里取出一个actor来执行

actor = queue.take();


if(actor != null){
actor.do(); //这个do 要做很多事啦,接收消息啦,执行任务啦...差不多就是依次调用onXXX方法
}
//然后呢, 如果队列很长时间一直为空可咋办呢?
//线程不能这么一直死循环啊, sleep? sleep 多长时间呢?频繁唤醒也不太好吧
//就是这个地方没有想明白, 如果用blockQueue 可以在take()的时候阻塞,但是那样就用到锁了。不是很理想
//希望大牛解答,不胜感激
}

[该贴被px96004于2015-09-10 22:23修改过]

    

banq
2015-09-11 09:22

Java的Actor实现:Quasar,而且是类似ErLang或Go那种纤程的。