zoukankan      html  css  js  c++  java
  • Code Examples for scala actor link

    package test.scala.lang.actor
    
    import scala.actors.Actor
    import scala.actors.Exit
    
    object TestActorLink {
    
      def main(args: Array[String]): Unit = {
        //testReact
        testLink
      }
      
      def testLink = {
        val master = new MActor
        master.start()
        
        val slave = new SActor(master)
        slave.start()
        
        Thread.sleep(3000)
        master ! "test"
        master ! 4
        master ! "test"
        
        slave ! "test"
        slave ! 4
        slave ! "test"
      }
    
      def testReact = {
        val t = new TActor
        t.start()
    
        Thread.sleep(3000)
        t ! 4
        t ! "test"
      }
    
    }
    
    class MActor extends Actor {
      def act() {
        println("master actor start...")
        loop {
          react({
            case x: String => {
              println("MActor: " + x)
              println("MActor: goodbye guys")
              exit("game over, haha!") //非Normal原因终止
              //exit //Normal原因终止
            }
            case o => println(o)
          })
        }
      }
    }
    
    /**
     * Terminates execution of self with the following effect on linked actors:
     * For each linked actor a with trapExit set to true, send message Exit(self, reason) to a.
     * For each linked actor a with trapExit set to false (default), call a.exit(reason) if reason != 'normal.
     */
    class SActor(master: Actor) extends Actor {
      def act(){
        println("slave actor start...")
        trapExit = true
        link(master)//当前Actor链接到的Actor如果以非Normal原因终止,则该Actor也终止。
        loop {
          react({
            case Exit(master, reason) => {
            	println(s"---[$master] game over by [$reason]---")
              println(s"SActor say: why are you so diao, [$master] ?")
              exit
            }
            case x => {
              println("SActor say: " + x)
            }
          })
        }
      }
    }
    
    
    class TActor extends Actor {
      def act() {
        println("act start...")
        while (true) {
          react({
            case x: String => println(x)
          })
        }
      }
    }
    
    

    http://booksites.artima.com/actors_in_scala/examples/html/ch06.html#sec2

  • 相关阅读:
    构建maven项目3
    maven初试2
    maven入门
    Spring对Hibernate事务管理
    UNIX网络编程卷1 时间获取程序client UDP 协议无关
    keystone WSGI流程
    Request介绍及演示样例 PART1
    恭喜兄弟到360实习
    GNU Linux高并发性能优化方案
    QTP 无法识别web 大全
  • 原文地址:https://www.cnblogs.com/ihongyan/p/4839384.html
Copyright © 2011-2022 走看看