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 和