`
chenjingbo
  • 浏览: 460654 次
  • 性别: 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 是一种自带笔记本电脑的活动,我们不保证会场的网络连接可靠。 因此,克隆这个...

    Scala-学习资料-mht.rar

    5. Akka框架:Akka是用Scala编写的开源框架,用于构建高度可扩展、容错的应用程序,它充分利用了Scala的Actor模型。 6. Scala与Java互操作:由于Scala是运行在JVM上的,所以可以直接使用Java库,与Java代码无缝集成...

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

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

    scala学习笔记整理

    在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...

    scala讲解笔记 入门及进阶 PDF文档1-5

    第四部分:"Scala入门及进阶-part04-Akka Actor.pdf" 专注于Scala与Akka框架的集成,Akka是用于构建高度并发、分布式和容错系统的工具。Actor模型在Akka中扮演核心角色,这部分将解释Actor如何工作,以及如何创建、...

    Testing in Scala-带书签目录超清文字版.pdf

    1. **Scala基础**:首先,书籍可能会介绍Scala的基础语法,如类型系统、模式匹配、高阶函数和类、特质等,这些都是编写测试代码的基础。 2. **Scala测试框架**:Scala社区中有多个流行的测试框架,如ScalaTest、...

    scala rpc基础搭建

    接下来,我们来看`akka笔记.txt`中的内容,可能会涉及如何创建Actor以及如何进行远程调用: 1. 创建Actor:使用`Props`和`ActorSystem`创建Actor。例如: ```scala val system = ActorSystem("MySystem") val ...

    scala-learn:scala学习笔记

    Scala通过Akka库提供了基于Actors的并发模型,Actors是轻量级的并发实体,通过消息传递进行通信,这使得编写并发程序变得简单且安全。 8. **类型系统** Scala的类型系统十分强大,包括类型推断、类型参数、隐式...

    尚硅谷_韩顺平_Scala语言核心编程_PDF密码解除1

    1. **学习Scala的原因**: Scala的出现主要是为了解决Java等传统编程语言在处理并发、复杂数据结构和模式匹配等方面的问题。它的设计目标是提高代码的可读性和可维护性,同时提供强大的类型系统和表达能力,使得...

    scala-impatient-notes

    Scala内置对Akka框架的支持,Akka的Actors模型提供了一种轻量级的线程模型,用于构建高度并发和分布式系统。 七、Scala与Java互操作 Scala编译成Java字节码,可以直接调用Java API,同时Java也可以调用Scala的类和...

    读书笔记:Scala支持的著名的并发编程框架Akka的学习记录.zip

    读书笔记:Scala支持的著名的并发编程框架Akka的学习记录

    Scala-Tutorial:Scala语法学习笔记与程式码范例from 韩顺平老师教学

    1. 变量声明:Scala中的变量分为val(不可变)和var(可变)。例如: ```scala val immutableVar = "Hello" var mutableVar = 10 ``` 2. 函数定义:Scala中的函数可以定义为匿名或命名,使用def关键字。如: ```...

    读书笔记:基于Akka编写的RPC通讯程序Demo以Scala为开发语言.zip

    读书笔记:基于Akka编写的RPC通讯程序Demo以Scala为开发语言

    学习scala好的项目

    此外,可能会涉及到的高级主题包括Akka(一个用于构建高度并发、分布式的应用程序的框架),以及Scala的函数式编程特性,如高阶函数、柯里化、闭包和Monad。对于想要深入了解Scala的人来说,这些内容是必不可少的。 ...

    读书笔记:以Scala带动对异步编程webflux、akka、pulsar、gRpc等框架学习.zip

    读书笔记:以Scala带动对异步编程webflux、akka、pulsar、gRpc等框架学习

    scala学习资料

    1. 面向对象编程:Scala支持类、接口、继承和多态等面向对象概念。与其他面向对象语言不同,Scala中的类和对象是统一的,任何定义都可以被视为对象,而任何方法都可以视为函数,这使得代码更加简洁和灵活。 2. 函数...

    使用 Akka IO 在 Scala 中实现非阻塞 Redis 客户端.zip

    使用 Akka IO 在 Scala 中实现非阻塞 Redis 客户端重新反应基于 Akka I/O 的非阻塞 Redis 客户端图书馆的主要特色非阻塞,与 Future 组合全套 Redis 命令脚本支持基于透明类型类的序列化与 Json 序列化库的开箱即用...

    scala笔记:学习scala时的笔记

    - Akka框架在Scala中提供了Actor模型,用于构建并发和分布式系统。 - Actors是轻量级的并发实体,通过消息传递进行通信,确保线程安全。 9. **类型类**: - 类型类是一种设计模式,通过隐式参数实现,使得类型...

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

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

Global site tag (gtag.js) - Google Analytics