讨喜的隔离可变性-前言

简介:

曾有个的医嘱是这样说的:“如果它伤到了你,那就别再用它了”。在并发编程领域,共享可变性就是那个“它”。

虽然JDK的线程API使我们可以非常容易地创建线程,但如何防止线程冲突和逻辑混乱却又成了大问题。STM虽然可以解决部分问题,但是在一些类似Java这样的语言中,我们仍不得不非常小心谨慎地避免非托管可变变量和事务逻辑中产生某些副作用。而令人惊讶的是,当共享可变性消失的时候,所有那些令人纠结的问题也都随之消失了。

事实证明,在相同数据集上起多个线程互相冲突地执行是行不通的。幸运的是我们有更好的办法——基于事件的消息传递。通过这种方法,我们可以将任务当成是应用程序/JVM内部的轻量进程来对待。同时,我们将不可变消息传递给各个任务,从而避免每个任务都去抢占共享数据。一旦这些异步任务执行完毕,它们会将不可变的执行结果返回给另外的协调线程。在下面的章节中我们将学习如何设计这种带有“用于异步交换不可变消息的协调角色(actor)[1]”的应用程序。

虽然这种方法已经问世多年了,但在JVM领域却还是相对较新的技术。基于角色(actor)的模型在Erlang中是非常成功的(参见《Programming Erlang: Software for a Concurrent World》[Arm07]以及《Concnrrent Programming in Erlang》[VWWA96])。而当Scala 2003年被引入时,Erlang的基于角色(actor)的模型也同时被采纳并引入到JVM大家庭中(参见《Programming in Scala》[OSV08]以及《Programming Scala》[Sub09])。

在Java中,有大把基于角色(actor)的并发库[2]可供我们选择:ActorFoundary、Actorom、Actors Guild、Akka、FunctionalJava、Kilim、Jetlang等等。其中部分类库是以面向切面(AspectOriented)的字节码形式来进行组织的。同时,这些类库的成熟度和被大家的接受度也都不尽相同。

在本章中,我们将学习如何编写基于角色(actor)的并发程序。在大多数情况下,我们将使用Akka以便能够直奔核心概念。Akka是一个基于Scala的高性能解决方案,同时还提供了相当好用的Java API。我们既可以将其用于基于角色(actor)的并发,也可以将之用于STM(参见第6章)。

  1. 讨喜的隔离可变性-前言
  2. 讨喜的隔离可变性(一)用角色实现隔离可变性
  3. 讨喜的隔离可变性(二)角色的特性
  4. 讨喜的隔离可变性(三)创建角色
  5. 讨喜的隔离可变性(四)收发消息
  6. 讨喜的隔离可变性(五)同时使用多个角色
  7. 讨喜的隔离可变性(六)多角色协作
  8. 讨喜的隔离可变性(七)使用类型化角色
  9. 讨喜的隔离可变性(八)类型化角色和Murmurs
  10. 讨喜的隔离可变性(十)使用Transactor
  11. 讨喜的隔离可变性(十一)调和类型化角色
  12. 讨喜的隔离可变性(十二)基于角色模型的局限性和小结
  13. 讨喜的隔离可变性(十三)角色的特性

[1] 有人曾经问我这些角色(actor)与用例中其他角色(actor)如何交互的问题——答案是什么交互也不做。这些角色(actor)只对它们收到的消息起作用,即收到消息之后执行一些专门的任务,然后将响应消息传递给其他角色(actor)…如此周而复始地顺序执行。

[2] 试想一下如果我们只能选择其中一种方案的话,那将会是多么令人头痛的问题。

目录
相关文章
|
Kubernetes Docker 容器
Docker 与 K8S学习笔记(番外篇)—— 搭建本地私有Docker镜像仓库
我们在学习K8S时会有个问题,那就是我自己做的应用镜像如何在K8S中部署呢?如果我们每做一个镜像都要推送到公共镜像仓库那未免太麻烦了,这就需要我们搭一个私有镜像仓库,通过私有仓库,K8S集群便可以从中拉取镜像了。 一、拉取并部署docker register 私有镜像仓库部署也很简单,Docker
1899 0
|
6月前
|
人工智能 JSON 机器人
Win10/11 飞书联动 OpenClaw 远程办公自动化搭建教程
OpenClaw(小龙虾)v2.4.1 新增飞书机器人支持!无需公网,通过内网长连接即可实现飞书端自然语言指令下发,自动解析、拆解并执行本地AI自动化任务。Windows一键部署,可视化配置,适配Win10/11,开箱即用。(239字)
1207 3
|
7月前
|
机器学习/深度学习 JSON 自然语言处理
分析各平台在结构化、半结构化、非结构化数据融合方面的技术路径差异
本文对比Palantir、UINO、字节、京东等平台的多模态数据融合技术路径,聚焦结构化、半结构化、非结构化数据处理能力及统一查询实现差异,指出本体语义层架构在跨模态洞察上的核心优势。(239字)
|
9月前
|
人工智能 关系型数据库 分布式数据库
多图,PolarDB 2026 开发者大会有感
解读阿里云PolarDB开发者大会上数据库的AI原生演进:从数据形态融合、模型算子化到湖库一体架构,PolarDB通过四大支柱构建面向智能体时代的统一数据基座,推动数据库向“AI in SQL”与自主治理的深度变革。
|
数据采集 安全 数据可视化
如何应对“老油条”员工,提升团队效率——HR该如何做?
如何应对“老油条”员工,提升团队效率?文章探讨HR在面对消极怠工员工时的解决策略。通过解构管理漏洞、引入智能化人事系统、重塑沟通机制、构建预防体系及推动数字化转型,从根源剖析问题并制定系统化方案。借助数据工具优化评估,强化沟通闭环与人才匹配,将资深员工转化为积极贡献者,实现团队效能全面提升。
684 12
|
存储 弹性计算 安全
阿里云服务器租用价格参考:最新包年包月收费标准与活动价格整理
购买阿里云服务器一年多少钱?2025年阿里云服务器价格又调整了,轻量云服务器2核2G200M峰值带宽38元一年、2核4G4M带宽60GB ESSD云盘298元一年,e实例云服务器2核2G3M带宽99元1年,u1实例2核4G5M带宽199元一年、4核8G云服务器955元一年,4核16G10M云服务器70元1个月、210元3个月,8核32G10M带宽160元1个月、480元3个月。对于想要上云的用户来说,了解阿里云服务器的价格体系是选择合适产品的第一步。那么,2025年购买阿里云服务器到底需要多少钱呢?本文为大家整理汇总了截止目前阿里云服务器的最新包年包月收费标准和活动价格情况,以供参考。
|
10月前
|
SQL JSON 数据库
SQL Server Management Studio (SSMS) 22.1 发布 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 22.1 - 微软数据库管理工具
603 0
|
10月前
|
监控 安全 网络安全
VPC专有网络搭建与安全组配置
本文系统介绍VPC专有网络搭建与安全组配置,涵盖CIDR规划、子网划分、路由策略、NAT/VPN网关应用、安全组最小权限原则及混合云连接方案,结合多区域互联实战与安全检查清单,全面呈现云上网络安全架构最佳实践。
696 0
|
机器学习/深度学习 人工智能 自然语言处理
47_历史里程碑:从ELIZA到Transformer
在当今的数字时代,我们已经习惯于与智能助手对话、向大语言模型提问,甚至依赖它们生成创意内容。然而,这看似理所当然的人机对话能力,实际上经历了长达半个多世纪的曲折发展历程。从1966年麻省理工学院的简陋程序,到2017年Google提出的革命性架构,聊天AI的演变不仅是技术的进步,更是人类对自身语言本质探索的缩影。
1452 31
|
人工智能 搜索推荐 API
API文档工具谁能胜出:Apifox与Apipost深度对比
Apifox与Apipost功能对比显示,Apifox在自定义域名、页面布局、SEO优化、跨域代理、数据分析、版本管理及权限控制等方面优势明显,更适合对API文档有高要求的企业级用户;而Apipost则侧重基础文档分享,适合轻量级使用场景。两者均集成AI能力,但Apifox应用更深入。
API文档工具谁能胜出:Apifox与Apipost深度对比

热门文章

最新文章