15. Scala并发编程模型Akka
15.1 Akka介绍
1) Akka是Java虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时,可以理解成Akka是编写并发程序的框架
2) Akka用Scala语言写成,同时提供了Scala和Java的开发接口
3) Akka主要解决的问题是:可以轻松的写出高效稳定的并发程序,程序员不再过多的考虑线程、锁和资源竞争等细节
15.2 Actor模型用于解决什么问题
1) 处理并发问题关键是要保证共享数据的一致性和正确性,因为程序是多线程时,多个线程对同一个数据进行修改,若不加同步条件,势必会造成数据污染。但是当我们对关键代码加入同步条件synchronized后,实际上大并发就会阻塞在这段代码,对程序效率有很大影响
2) 若是用单线程处理,不会有数据一致性的问题,但是系统的性能又不能保证
3) Actor模型的出现解决了这个问题,简化并发编程,提升程序性能。可以理解成Actor模型是一种处理并发问题的解决方案
15.3 Akka中的Actor模型
15.3.1 Actor模型及其说明
1) Akka处理并发的方法基于Actor模型(示意图)
2) 在基于Actor的系统里,所有的事物都是Actor,就好像在面向对象设计里面所有的事物都是对象一样
3) Actor模型是作为一个并发模型设计和架构的。Actor与Actor之间只能通过消息通信,如图的信封
4) Actor与Actor之间只能用消息进行通信,当一个Actor给另一个Actor发消息,消息是有顺序的(消息队列),只需要将消息投寄到相应的邮箱即可
5) 怎么处理消息是由接收消息的Actor决定的,发送消息Actor可以等待回复,也可以异步处理[ajax]
6) ActorSystem的职责是负责创建并管理其创建的Actor,ActorSystem是单例的(ActorSystem是一个工厂,专门创建Actor),一个JVM进程中有一个即可,而 Acotr是可以有多个的
7) Actor模型是对并发模型进行了更高的抽象
8) Actor模型是异步、非阻塞、高性能的事件驱动编程模型
9) Actor模型是轻量级事件处理(1GB 内存可容纳百万级别个Actor),因此处理大并发性能高
15.4 Actor模型工作机制说明
-说明了Actor模型的工作机制(对应上图)
1) ActorySystem创建Actor
2) ActorRef:可以理解成是Actor的代理或者引用。消息是通过ActorRef来发送,而不能通过Actor发送消息,通过哪个ActorRef发消息,就表示把该消息发给哪个Actor
3) 消息发送到Dispatcher Message(消息分发器),它得到消息后,会将消息进行分发到对应的MailBox。(注:Dispatcher Message可以理解成是一个线程池,MailBox可以理解成是消息队列,可以缓冲多个消息,遵守FIFO)
4) Actor可以通过receive方法来获取消息,然后进行处理
-Actor模型的消息机制(对应上图)
1) 每一个消息就是一个Message对象,Message继承了Runable,因为Message就是线程类
2) 从Actor模型工作机制看上去很麻烦,但是程序员编程时只需要编写Actor就可以了,其它的交给Actor模型完成即可
3) A Actor要给B Actor发送消息,那么A Actor要先拿到(也称为持有)B Actor的代理对象ActorRef才能发送消息
转载于:https://www.cnblogs.com/zhanghuicheng/p/10884477.html
15. Scala并发编程模型Akka相关推荐
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- 并发编程模型Akka
1)Akka是java虚拟机JVM平台上构建高并发.分布式和容错应用的工具包和运行时,可以理解为Akka是编写并发程序的框架 2)akka是用scala语言写成,同时提供了scala和java的开发接 ...
- Scala并发编程(二)之 Akka
Scala并发编程之 Akka 概述 Akka通信过程 Actor Path 入门案例 定时任务案例 两个进程之间的通信案例 简易版 Spark通信框架实现案例 概述 Akka是使用 Scala开发的 ...
- java akka 教程_Akka与并发编程模型
Akka是一种并发编程模型的框架,其官网为http://akka.io.提供Java版本和Scala版本的API. 从学习或者使用的角度来说,我们首先要说明的是,Akka的并发编程模型(流水线模式)与 ...
- Scala入门到精通——第二十六节 Scala并发编程基础
本节主要内容 Scala并发编程简介 Scala Actor并发编程模型 react模型 Actor的几种状态 Actor深入使用解析 1. Scala并发编程简介 2003 年,Herb Sutte ...
- 四种并发编程模型简介
概述 并发往往和并行一起被提及,但是我们应该明确的是"并发"不等同于"并行" • 并发 :同一时间 对待 多件事情 (逻辑层面) • 并 ...
- [ ECUG 专题回顾]《再谈 CERL:详论 GO 与 ERLANG 的并发编程模型差异》-许式伟(七牛云存储 CEO)...
许式伟:我们开始,先介绍一下ECUG,从07年开始,最早在珠三角珠海广州深圳,在珠三角兴起,最早是Erlang的社区.大概到10年的时候更名为实时效云计算的群组,最早的时候也不局限于Erlang,而是 ...
- 【专家坐堂】四种并发编程模型简介
本文来自网易云社区 概述 并发往往和并行一起被提及,但是我们应该明确的是"并发"不等同于"并行" • 并发 :同一时间 对待 多件事情 (逻辑层面) ...
- Akka框架——第一节:并发编程简介
本节主要内容: 1. 重要概念 2. Actor模型 3. Akka架构简介 多核处理器的出现使并发编程(Concurrent Programming)成为开发人员必备的一项技能,许多现代编程语言都致 ...
最新文章
- 烂大街的缓存穿透、缓存击穿和缓存雪崩,你真的懂了?
- LeetCode - 25. Reverse Nodes in k-Group
- 小妲己智能机器人要连接wifi吗_“能扫能拖,聪明能干”,360扫地机器人S7一周体验分享...
- ant build里如何指定classpath
- atom对比 vscode_几款前端IDE工具:Sublime、Atom、VSCode比较
- 智能算法之免疫算法求解TSP问题
- java单线程爬虫使用Jsoup爬取bt磁力链接
- 动态SQL execute immediate
- 基金会总线协议分析(FF协议)
- 大专计算机应用技术毕业生登记表自我鉴定,大专毕业生登记表的自我鉴定(精选5篇)...
- 大案牍术——我们或是只是一串数字
- python教孩子学编程,教孩子学编程(Python语言版)
- 微软官方外挂,让你的win10更加好用
- cdrx8如何批量导出jpg_coreldraw2019中把所有页面批量导出jpg图的解决方法
- 塔科夫为什么远程服务器返回错误,逃离塔科夫登陆错误解决教程
- 总投资2185.38亿元,澜沧江水电站传来好消息
- 【送书】就业大崩溃,你是否正在从事20年内大概率被淘汰的职业?
- 合肥达内培训php,合肥达内PHP培训php7扩展声明与获取ini配置
- Java面向对象练习题之西游记人物
- 海外大火,国内鲜有耳闻,多功能料理机是否存在“水土不服”的问题?
热门文章
- Mac忘记root密码(Mac OS Sierra忘记root密码如何重置)
- 漫步最优化四十四——基本拟牛顿法
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
- 【差分隐私的Advanced composition到底是什么?】差分隐私系统学习记录(四)
- C++/C--字符串分割函数 --strtok()
- Arm开发板内核驱动模块--Helloworld及Makefile
- Spring表达式语言使用
- 求C n m(从n个数中选m个数,有多少种组合?问题)暴力—递归——回归数学公式,三种方法,层层优化!
- MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(下)分类/灰度共生矩阵/纹理分类学习
- Linux vector最大存储数量,C++ STL vector容量(capacity)和大小(size)的区别