【图文详细 】Scala——Actor

本文介绍了Scala中的Actor模型,它是一种基于事件和消息传递的并发机制,与Java的共享数据和加锁机制不同,避免了资源争夺和死锁。Actor有自己的状态、行为、信箱和子Actor,通过消息模式匹配进行处理。文章对比了Java和Scala的并发编程模型,并给出了Scala Actor的消息发送方式和实例。

3、Scala Actor 

 

3.1、概念 
Scala 中的 Actor 能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala 是运 用消息(message)的发送、接收来实现多线程的。使用 Scala 能够更容易地实现多线程应 用的开发。 
 
一个 Actor 是一个容器,它包含状态,行为,信箱,子 Actor 和监管策略,所有这些包含在 一个 ActorReference(Actor 引用)里。一个 Actor 需要与外界隔离才能从 Actor 模型中获益, 所以 Actor 是以 Actor 引用的形式展现给外界的。

 

3.2、传统的 Java 并发编程模型和 Scala Actor 区别 

3.2.1、Java 中的并发编程模型 
1、Java 中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需 要。 
2、Java 中的并发编程是基于共享数据和加锁的一种机制,即会有一个共享的数据,然后有 若干个线程去访问这个共享的数据(主要是对这个共享的数据进行修改),同时 Java 利用加锁 的机制(即 synchronized)来确保同一时间只有一个线程对我们的共享数据进行访问,进而保 证共享数据的一致性。 
3、Java 中的并发编程存在资源争夺和死锁等多种问题,因此程序越大问题越麻烦。 

3.2.2、Scala 中的并发编程模型 
1、Scala 中的并发编程思想与 Java 中的并发编程思想完全不一样,Scala 中的 Actor 是一种不 共享数据,依赖于消息传递的一种并发编程模式,避免了死锁、资源争夺等情况。在具体实 现的过程中,Scala 中的 Actor 会不断的循环自己的邮箱,并通过 receive 偏函数进行消息的 模式匹配并进行相应的处理。 
2、如果 Actor A 和

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值