前言
我发现我太懒了,说好的学习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 和 ! 很有趣。
这个 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的线程通信,那有多困难。