Akka: actor应用的一些小结
1.消息:
1) case class是scala中一个不可变对象(当然你可以让他成为可变的),通过不可变对象来进行消息传递可以更加明确内容,也能保证线程安全
2) 在Java中如果你将class对象当成消息时候是无法保证这个对象在消息传递过程中不会被改变的,在Java中对象的状态都是可以随时改变的,除非你特别指定
2.通信:
1)单个actor中的消息需要发送给多个actor最好使用不可变对象保证线程安全,即使是可变对象也应该传递一个拷贝而不是对象本身
2)actor有自己的信箱,内部本身是单线程的,串行执行信箱中的每一封邮件
3.生命周期:
1)每个actor都有自己的生命周期有点类似servlet;每个actor都是一个容器;
4.调度与监管:
1)每个actor都会占用一定的资源,如果开发者不主动释放资源,actor是不会释放资源的,所以不要随意的创建actor;
2)默认的调度引擎(dispatcher)是fork-join —— 类比Java的其他并发库如:Threads, Executor