前言
我发现我太懒了,说好的学习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的线程通信,那有多困难。
相关推荐
阿卡持久性rocksdb Akka 的实验性基于的持久性存储。 这是一个 alpha 版本; 目前它更像是 RocksDB 和 Akka-Persistence 的实验,而不是 Akka-...笔记 需要 Akka 2.4-Snapshot,因为它使用简化的 akka-persi
在期间,我想编写一个 Scala 宏,当它遇到路由之间缺少的连接运算符时,它会中止编译(或至少引发编译器警告)。 ScalaWAW hackathon 是一种自带笔记本电脑的活动,我们不保证会场的网络连接可靠。 因此,克隆这个...
5. Akka框架:Akka是用Scala编写的开源框架,用于构建高度可扩展、容错的应用程序,它充分利用了Scala的Actor模型。 6. Scala与Java互操作:由于Scala是运行在JVM上的,所以可以直接使用Java库,与Java代码无缝集成...
笔记 要让多个分片参与者在单独的节点子集上运行,并且可以从集群中的其他节点访问,例如: Counter1 在 node1、node2、node3 上运行 Counter2 在 node7、node8、node9 上运行 Query 想同时查询 Counter1 分片和 ...
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
第四部分:"Scala入门及进阶-part04-Akka Actor.pdf" 专注于Scala与Akka框架的集成,Akka是用于构建高度并发、分布式和容错系统的工具。Actor模型在Akka中扮演核心角色,这部分将解释Actor如何工作,以及如何创建、...
1. **Scala基础**:首先,书籍可能会介绍Scala的基础语法,如类型系统、模式匹配、高阶函数和类、特质等,这些都是编写测试代码的基础。 2. **Scala测试框架**:Scala社区中有多个流行的测试框架,如ScalaTest、...
接下来,我们来看`akka笔记.txt`中的内容,可能会涉及如何创建Actor以及如何进行远程调用: 1. 创建Actor:使用`Props`和`ActorSystem`创建Actor。例如: ```scala val system = ActorSystem("MySystem") val ...
Scala通过Akka库提供了基于Actors的并发模型,Actors是轻量级的并发实体,通过消息传递进行通信,这使得编写并发程序变得简单且安全。 8. **类型系统** Scala的类型系统十分强大,包括类型推断、类型参数、隐式...
1. **学习Scala的原因**: Scala的出现主要是为了解决Java等传统编程语言在处理并发、复杂数据结构和模式匹配等方面的问题。它的设计目标是提高代码的可读性和可维护性,同时提供强大的类型系统和表达能力,使得...
Scala内置对Akka框架的支持,Akka的Actors模型提供了一种轻量级的线程模型,用于构建高度并发和分布式系统。 七、Scala与Java互操作 Scala编译成Java字节码,可以直接调用Java API,同时Java也可以调用Scala的类和...
读书笔记:Scala支持的著名的并发编程框架Akka的学习记录
1. 变量声明:Scala中的变量分为val(不可变)和var(可变)。例如: ```scala val immutableVar = "Hello" var mutableVar = 10 ``` 2. 函数定义:Scala中的函数可以定义为匿名或命名,使用def关键字。如: ```...
读书笔记:基于Akka编写的RPC通讯程序Demo以Scala为开发语言
此外,可能会涉及到的高级主题包括Akka(一个用于构建高度并发、分布式的应用程序的框架),以及Scala的函数式编程特性,如高阶函数、柯里化、闭包和Monad。对于想要深入了解Scala的人来说,这些内容是必不可少的。 ...
读书笔记:以Scala带动对异步编程webflux、akka、pulsar、gRpc等框架学习
1. 面向对象编程:Scala支持类、接口、继承和多态等面向对象概念。与其他面向对象语言不同,Scala中的类和对象是统一的,任何定义都可以被视为对象,而任何方法都可以视为函数,这使得代码更加简洁和灵活。 2. 函数...
使用 Akka IO 在 Scala 中实现非阻塞 Redis 客户端重新反应基于 Akka I/O 的非阻塞 Redis 客户端图书馆的主要特色非阻塞,与 Future 组合全套 Redis 命令脚本支持基于透明类型类的序列化与 Json 序列化库的开箱即用...
- Akka框架在Scala中提供了Actor模型,用于构建并发和分布式系统。 - Actors是轻量级的并发实体,通过消息传递进行通信,确保线程安全。 9. **类型类**: - 类型类是一种设计模式,通过隐式参数实现,使得类型...
目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 函数式编程说明 函数定义/声明 函数运行机制 递归 ...Scala数据结构之集合 ...Akka 介绍