Scala入门指南之Akka并发编程框架简介

Scala入门指南系列教程目录

Scala入门指南之配置环境

Scala入门指南之面向对象编程基础

Scala入门指南之面向对象编程进阶

Scala入门指南之集合(一)

Scala入门指南之集合(二)

Scala入门指南之函数式编程

Scala入门指南之Akka并发编程框架简介

前面介绍了那么多关于Scala的基础语法,终于迎来了了Scala入门指南的最后一篇——Akka简介。看标题读者就能知道,Akka是一个并发编程框架,也可以通俗点说,就是用来开发多线程的。Java中的多线程开发是使用加锁的机制来确保同一时间只有一个线程访问共享数据的传统方法,但是这种方式存在资源争夺、以及死锁问题,程序越大问题越麻烦。而Scala作为Java的升级版或者说是Java的现代版,自然要摒弃这种老套的理念。Scala使用Actor并发编程模型,是一种基于事件模型的并发机制,也是一种不共享数据,依赖消息船体的一种并发编程模式,可以有效避免资源争夺、死锁等情况。

Actor的并发编程模型很像消息队列,只不过消息队列分生产者、消费者和消息队列,而Actor的模型中只有多个Actor。Actor和Actor之间相互传递消息,并没有一个中间存放的地方,在Actor收到消息后执行用户定义的操作。

读者可能会有疑问,标题是介绍Akka,为什么在说Actor呢?他们之间的关系是什么呢?其实Akka和Actor的理念是一样的,只不过Actor是Scala自己的实现,并不能被Java所用。Akka虽然是使用Scala开发的库,但是他可以被Scala和Java使用。也就是说Akka是独立于Scala的库。同时Akka还有一些其他的优点,比如内容容错机制,允许Actor在出错时进行恢复和重置操作;超级轻量级的事件处理,每GB堆内存几百万Actor;更加适合高并发,可以构建分布式程序并且是可扩展的等等。

那么Akka是怎么改进的呢?Akka引入了ActorSystem、ActorRef(Actor引用)、Message Dispatcher(消息分发器)、MailBox。具体的基本流程为:

1.用户创建一个ActorSystem,由他来管理Actor,相当于是Actor的一个文件夹。

2.用户通过ActorSystem来创建一个ActorRef,并将消息发送给ActorRef,这里ActorRef扮演的是个Proxy(代理)的角色。

3.ActorRef把消息发送给Message Dispatcher,这个消息分发器用来把消息分发下去,相当于是个传达室的作用。

4.Message Dispatcher把消息按照顺序保存到目标Actor的MailBox中。可以理解为因为Actor很忙,所以传达室收到报纸后把报纸交给小助手。

5.Message Dispatcher将MailBox放到一个线程中。相当于传达室安排小助手去工作。

5.MailBox按照顺序取出消息,最终把它传递给目标Actor接收的方法中。这一步相当于小助手按照接收的顺序把报纸

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值