第10章 并发编程
在Scala里,实现多线程应用变得简单了。在Java里,要先创建一个线程,然后运用同步原语:notify和wait,尽力对它进行控制,以避免数据竞争①。即便如此,我们依然会质疑代码是否正确:会有数据竞争吗?或着,会有死锁的可能性吗?
①Doug Lea的Concurrent Programming in Java [Lea00]和Brian Goetz的Java Concurrency in Practice [Goe06],整本书都是关于如何征服Java线程的。
Scala使用基于事件的模型②进行线程间通信,把不变对象当作消息进行传递。在本章里,我会介绍Scala actor模型的概念,用它及之前本书里学到所有概念,开发Scala的并发应用。
②Scala的actor模型类似于Erlang的模型。参见Joe Armstrong的Programming Erlang: Software for a Concurrent World [Arm07]或是Robert Virding等人的Concurrent Programming in Erlang [VWWA96]。