第25课:Scala并发编程实战进阶

其实在业界中,Netty已经成为了企业中分布式通信的一个标准了,因为它能够高效地应对分布式海量并发编程
另外基于Scala的Actor,有一个并发编程框架,Akka
其实NIO的本质和精髓在于异步!!!

}A5V@W_KUIZDMBT@F2KWK@J.png
class HelloScalaActor extends Actor {
  override def act()= {
    while(true) {
      receive {
        case "Scala" =>
          println(Thread.currentThread().getName)
      }
    }
  }
}

object ConcurrentPrograming {
 
  def main(args:Array[String]){
    val actor=new HelloScalaActor()
    actor.start()
    println(Thread.currentThread().getName)
    for( i <- 1 to 10)
    actor ! "Scala"
  }
 
}

从这里可以看到Actor背后其实就是一个线程
这里其实有一个问题,假如开10个Actor,就有10个线程,假如你处理的事情是非常轻量级的,会非常浪费资源
这个时候要进行线程复用,怎么办?

class HiScalaActor extends Actor {
  override def act()= {
    react {
        case "Scala" =>
          println(Thread.currentThread().getId)
          act()
     
    }
  }
}

object ConcurrentPrograming {
 
  def main(args:Array[String]){
//    val actor=new HiScalaActor()
//    actor.start()
//    println(Thread.currentThread().getName)
    for( i <- 1 to 100)
    ((new HiScalaActor).start) ! "Scala"
  }
 
}

可以看看以上程序的运行结果

也可以这样写:

class HiScalaActor extends Actor {
  override def act() = {
    loop {
      react {
        case "Scala" =>
          println(Thread.currentThread().getId)
      }
    }
  }
}

NIO就是精妙地运用了线程复用的技术

现在的并发编程=消息系统+线程复用

归纳总结:1.Actor,Akka,Netty
2.通过实例理解Actor背后的原理
3.现代的并发编程

cccc.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容