Scala和并发编程
? Scala语言有很多优点,比如简洁、强大的表现力等等。但我最关注的,是它在并发编程方面的优势。
?
? Scala通过强调对象的不变性以及使用基于事件的模型进行线程间通信使得实现并发应用变得简单。
?? 不变对象? 并发编程之所以这么困难,很大一个原因在于对象的可变性。要在充斥着大量可变对象的程序里面实现安全并发,需要非常繁琐以及复杂易错的同步操作来保证状态更新的同步。
?
? 比如下面这段代码(java的例子),可能你会认为它已经是线程安全的了,因为所有的方法都已经被同步。
?
?
? 我们可以看到,程序里面定义两种不同的消息类型:Increment和Balance。Account是一个Actor,它跟外界的交互都是通过消息传递来实现:不论是increment,还是获取balance都是通过消息的方式来实现。当接受到不同的消息时,它会执行不同的行为。
?
? 我们也可以看到,Account的内部状态完全是自己控制的,接收到的消息是顺序执行的,所以我们不需要担心竞争问题。
?小结? Scala就是这样,通过“使用基于事件的模型进行线程间通信”,并且“把不变对象作为消息进行传递”来实现一个并发编程模型。
?
--EOF--