scala akka- 笔记 1

前言

我发现我太懒了,说好的学习scala顺便做笔记,然后就没有然后了。这次继续看吧,能记多少记多少。

 

 

第一个例子

package zhenghui.akka.actor

import scala.actors.Actor

/**
 * user: zhenghui on 2016/1/15.
 * date: 2016/1/15
 * time :21:23
 */
object HelloActor extends Actor{
  override def act(): Unit = {
    println(Thread.currentThread().getName)
    println("hello actor.")
  }

  def main(args: Array[String]) {
    HelloActor.start()
  }
}

 

写道
actor最简单的例子。这个例子看起来就像是实现了一个Runnable,然后start一下。

 

匿名scala 

package zhenghui.akka.actor

import scala.actors.Actor
import Actor._

/**
 * user: zhenghui on 2016/1/15.
 * date: 2016/1/15
 * time :21:37
 */
object HelloActor2 {

  def main(args: Array[String]) {
    actor {
      println(Thread.currentThread().getName)
      println("hello actor.")
    }.start()
  }
}

 

写道
好吧,就是一个匿名actor而已。不用定义这么多actor了

 

发送和接受消息

 

package zhenghui.akka.actor

import scala.actors.Actor._
/**
 * user: zhenghui on 2016/1/15.
 * date: 2016/1/15
 * time :21:37
 */
object ActorMessage {

  def main(args: Array[String]) {
    val actor_message = actor {
      while (true){
        receive{
          case msg => println(s"receive msg:$msg")
        }
      }
    }

    actor_message ! "hello actor"
  }

}

 

写道
这个感觉就和java的runabble线程不一样了。这里可以接收消息,并且用一个偏函数接收到消息并做处理。
这个 receive 和 ! 很有趣。

 

自身类型作为actor 

package zhenghui.akka.actor

import scala.actors.Actor._

/**
 * user: zhenghui on 2016/1/15.
 * date: 2016/1/15
 * time :22:07
 */
object ActorMessage2 {


  def main(args: Array[String]) {
    self ! "hello actor"

    self receive{case msg => println(msg)}
  }
}

 

写道
感觉很有趣啊。这种写法。

 

case class作为消息类型

package zhenghui.akka.actor

import scala.actors.Actor._

/**
 * user: zhenghui on 2016/1/15.
 * date: 2016/1/15
 * time :22:12
 */
object ActorMessage3 {

  def main(args: Array[String]) {
    self ! Message("hello scala ")

    self receive{case Message(name) => println(name)}
  }
}

case class Message (name:String)

 

写道
case class 或者case object 作为消息体类型,外加scala的模糊匹配,真当是绝配

 

发送者与接受者的通信

package zhenghui.akka.actor

import scala.actors.Actor._

/**
 * user: zhenghui on 2016/1/15.
 * date: 2016/1/15
 * time :22:19
 */
object ActorMessage4 {

  def main(args: Array[String]) {

    val receiveActor = actor{
      receive{
        case msg =>
          println(msg)
          sender ! "hello sender"
      }
    }

//    actor{
//      receiveActor ! "hello receiver "
//      receive{case msg => println(msg)}
//    }

    receiveActor ! "hello receiver2 "
    self receive{case msg => println(msg)}

  }
}

 

写道
我忽然想起来,如果要写一个java的线程通信,那有多困难。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值