`
chenjingbo
  • 浏览: 456466 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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的线程通信,那有多困难。

 

分享到:
评论

相关推荐

    akka-persistence-rocksdb:Akka-Persistence 的 RocksDB 存储后端

    阿卡持久性rocksdb Akka 的实验性基于的持久性存储。 这是一个 alpha 版本; 目前它更像是 RocksDB 和 Akka-Persistence 的实验,而不是 Akka-...笔记 需要 Akka 2.4-Snapshot,因为它使用简化的 akka-persi

    akka-http-routes-guard:ScalaWAW hackathon 项目 - 遇到路由之间缺少连接运算符时中止编译的宏

    在期间,我想编写一个 Scala 宏,当它遇到路由之间缺少的连接运算符时,它会中止编译(或至少引发编译器警告)。 ScalaWAW hackathon 是一种自带笔记本电脑的活动,我们不保证会场的网络连接可靠。 因此,克隆这个...

    akka-cluster-example-inloop:简单的 akka 集群示例

    笔记 要让多个分片参与者在单独的节点子集上运行,并且可以从集群中的其他节点访问,例如: Counter1 在 node1、node2、node3 上运行 Counter2 在 node7、node8、node9 上运行 Query 想同时查询 Counter1 分片和 ...

    SCALA从入门到精通个人笔记含代码

    目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 ...Scala数据结构之集合 ...Akka 介绍

    akka_notes:Akka在学习AkkaReact框架的同时注意

    Akka笔记 Akka消息 文档 源代码 从 Akka记录 文档 源代码 从 Akka测试 文档 源代码 从 Akka消息传递请求和响应 文档 源代码 从arunma / AkkaMessagingRequestResponse分叉

    sbt.g8:我用作 Scala 项目起点的giter8 模板

    Routing appsg8 mhamrah/sbt -b spray#And for Spark Appsg8 mhamrah/sbt -b spark笔记Go风格的目录布局合并的 build.sbt 文件:包括 akka、scalatest、logback、typesafe config 和 slick。 使用环境变量(包括回退...

    ddd-leaven-akka:使用 Akka 的React式 DDD

    ddd-酵素-阿卡 另见后续项目: 目标 了解如何在React式平台之上应用 DDD/CQRS 概念。 查看课程页面: : 笔记 业务逻辑摘自: : 灵感: 技术: 具体来说: :

    pipeline:海湾大数据Scala的完整管道培训

    管道 海湾大数据Scala的完整管道培训管道描述约会收视率数据=> Akka应用=> Kafka => Spark Streaming => Cassandra =>仪表板此外,还将在笔记本电脑界面上结合使用Cassandra实时数据和静态Parquet数据来演示Spark ...

    swagger-play

    笔记 该分支( master )拥有支持的最新播放版本的最新版本(主要版本2.x )( 2.7 ); 分支保留了play 2.6版本(major.minor 1.6.x版)的swagger-play版本。 较旧的版本可用,但分支不再支持。 概述 这是一个在...

    nescala-2015

    nescala 2015 笔记 网站: 会谈 0800:门打开 登记入住并喝杯咖啡 0850:开场白 让我们记住我们为什么在这里感谢那些让这一切发生的人 0900:Akka HTTP——什么、为什么和如何 马蒂亚斯·多尼茨 (@sirthias) 0950...

Global site tag (gtag.js) - Google Analytics