第69讲 scala并发编程 react 、loop 编程
2015-07-28 22:03
507 查看
上一节我们讲了,actor的receive 偏函数,它属于 每请求没线程模式,用完了就销毁。 有没有线程共享,请看本文。
scala 为了提升性能,有2种共享线程方式,一种是使用react ,另一种是 loop方法。
通过与上一节比较,主要通过react方法来替代receive方法进行消息的处理,为了控制线程退出,需要反复调用act方法。为了简化,请看loop方式
为了不递归调用act方法,scala 提供了 loop 函数。
最终代码如下
参考文档
百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0
微信号:18610086859
DT大数据微信公众账号:DT_Spark
DT大数据梦工厂交流群:462923555/418110145/437123764
scala 为了提升性能,有2种共享线程方式,一种是使用react ,另一种是 loop方法。
一、 react 方式
代码如下:def act(): Unit ={ react{ case NameToIp(name,actor)=> println(name+":"+getIp(name)) actor ! "successfully done" act // 为了不销毁线程,反复调用act方法 case msg => println(msg) act // 为了不销毁线程,反复调用act方法 case _=> println("nothing else ...") act // 为了不销毁线程,反复调用act方法 } }
通过与上一节比较,主要通过react方法来替代receive方法进行消息的处理,为了控制线程退出,需要反复调用act方法。为了简化,请看loop方式
二、 loop 方式
代码如下:def act(): Unit ={ loop { react{ case NameToIp(name,actor)=> println(name+":"+getIp(name)) actor ! "successfull done" case msg => println(msg) } } }
为了不递归调用act方法,scala 提供了 loop 函数。
最终代码如下
import scala.actors.Actor import scala.actors.Actor._ import java.net.InetAddress import java.net.UnknownHostExeption object NameResolver extends Actor{ def act(){ loop { react { case Net (name, actor) => sender ! getIp(name) act case msg => println("Unhandled message : " + msg) } } } def getIp(name : String) : Option[InetAddress] = { try{ println(InetAddress.getByName(name)) Some(InetAddress.getByName(name)) } catch { case _ : UnknownHostException => None } } } case class Net(name : String, actor: Actor) object Actor_More_effective { def main(args: Array[String]) { NameResolver.start NameResolver ! Net("www.baidu.com", self) println(self.receiveWithin(1000){case x => x}) } }
参考文档
百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0
微信号:18610086859
DT大数据微信公众账号:DT_Spark
DT大数据梦工厂交流群:462923555/418110145/437123764
相关文章推荐
- ReactiveCocoa框架菜鸟入门(一)——CocoaPods添加ReactiveCocoa
- ReactiveCocoa - iOS开发的新框架
- 第69讲:Scala并发编程react、loop代码实战详解学习笔记
- Reactor构架模式
- SGU 194 Reactor Cooling
- Scala并发编程react、loop代码实战解析
- Scala的react、loop代码编程
- React Native
- React学习系列
- React学习系列一
- Scala并发编程react、loop代码实战详解
- Scala并发编程react、loop代码实战
- 王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解
- reactor和proactor模式
- 两种I/O多路复用模式:Reactor和Proactor
- 函数式、响应式编程 - ReactiveCocoa 快速入门
- ReactiveCocoa P1
- react组件生命周期过程
- Reactive programming - 响应式编程
- The introduction to Reactive Programming you've been missing