美文网首页
第25课:Scala并发编程实战进阶

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

作者: fatj | 来源:发表于2016-08-17 19:23 被阅读0次

    其实在业界中,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

    相关文章

      网友评论

          本文标题:第25课:Scala并发编程实战进阶

          本文链接:https://www.haomeiwen.com/subject/rxomsttx.html