《Java并发编程》学习3——Java内存模型(JMM)①JMM基础

1.线程通信和线程同步

线程通信和线程同步是并发编程中需要处理的两个关键问题。

线程通信

在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。

在共享内存的并发模型中,线程共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。

在消息传递的并发模型中,线程之间没有公共状态,线程之间必须通过发送消息和接收消息来显式进行通信。

线程同步

同步指程序中用于控制不同线程间操作发生的相对顺序的机制。

在共享内存并发模型里,同步是显式进行的,程序员需要显式指定某个方法或某段代码需要在线程之间互斥执行。

在消息传递并发模型里,同步是隐式进行的,因为消息的发送必须发生在消息的接收之前。、

图3.1 线程通信和同步的两种机制

 

Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行得,通信过程对程序员完全透明。

2.Java内存模型的抽象结构

Java中的数据

共享变量:实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。

非共享变量:局部变量、方法定义参数和异常处理器参数不会在线程之间共享,不受内存模型的影响。

JMM的抽象结构

JMM:Java内存模型,它控制Java线程之间的通信,即决定一个线程对共享变量的写入何时对另一个线程可见。

JMM抽象结构:JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存(这是一个抽象概念,并不真实存在),本地内存中存储了该线程已读/写共享变量的副本。JMM涵盖了缓存、写缓冲区、寄存器以及其他硬件和编译器优化。

图3.2 Java内存模型的抽象结构

JMM下的通信过程:通信过程必须通过主存,JMM通过控制主存与每个线程的本地内存之间的交互,来为Java程序提供内存可见性保证。

图3.3 线程之间的通信图

3.重排序与内存屏障指令

重排序

①编译器优化的重排序:编译器在不改变单线程程序语义的前提下,可以重排语句的执行顺序。

②指令级并行的重排序:如果并行的指令不存在数据相关,处理器可以改变语句对应机器指令的执行顺序。

指令级并行技术:多条指令重叠(并行)执行。

③内存系统的重排序:由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能是乱序执行。

Java源代码到最终实际执行的指令序列,会依次经历上述三种重排序。

①属于编译器重排序(软件层面),②③属于处理器重排序。这些重排序可能会导致多线程程序出现内存可见性问题。

对于编译器,JMM的编译器重排序规则会禁止特定类型的编译器重排序。

对于处理器重排序,JMM的处理器重排序规则会要求Java编译器生成指令序列时,插入特定类型的内存屏障(Memory Barriers)指令,通过这种指令来禁止特定类型的处理器重排序。

JMM属于语言级的内存模型,通过禁止特定类型的重排序,为程序员提供一致的内存可见性保证(尽管在不同平台上)。

内存屏障

△现代处理器使用写缓冲区来临时保存向内存写入的数据,而每个处理器的写缓冲区只对该处理器可见,这就导致了处理器对内存的读/写操作的执行顺序,不一定与内存实际发生的读/写操作顺序一致。为了保证内存可见性,Java编译器在生成指令序列的适当位置会插入内存屏障指令来禁止特定类型的处理器重排序。JMM把内存屏障指令分为四类:

内存屏障类型表
屏障类型指令实例说明
LoadLoad BarriersLoad1;LoadLoad;Load2确保“Load1数据的装载”先于“Load2及所有后续装载指令的装载”
StoreStore BarriersStore1;StoreStore;Store2确保“Store1数据对其他处理器可见”(刷新到内存)先于“Store2及所有后续存储指令的存储”
LoadStore BarriersLoad1;LoadStore;Store2确保“Load1数据的装载”先于“Store2及所有后续的存储指令刷新到内存”
StoreLoad BarriersStore1;StoreLoad;Load2确保“Store1数据对其他处理器可见”先于“Load2及所有后续装载指令的装载”。StoreLoad Barriers会使该屏障之前的所有内存访问指令完成之后,才执行该屏障之后的内存访问指令

StoreLoad Barrirers具有其他三种内存屏障的效果,执行该屏障指令需要的代价最大。

4.happens-before初步理解

JSR-133内存模型使用happens-before的概念来阐述操作之间的内存可见性:在JMM中,如果一个操作A执行的结果需要对另一个操作B可见,那么这两个操作之间必须要存在happens-before关系(A happens before B)。

与程序员密切相关的happens-before规则:                                                                                                                                     

程序顺序规则:一个线程中的每个操作,happens-before于该线程中得任意后续操作。                                                             

监视器锁规则:对一个锁的解锁,happens-before与随后对这个锁的加锁。                                                                              

volatile变量规则:对一个volatile域的写,happens-before 于任意后续对这个volatile域的读。                                               

传递性:如果A happens-before B,且B happens-before C,那么A happens-before C。

△两个操作之间具有happens-before关系,并不意味着前一个操作必须要在后一个操作之前执行。happens-before仅仅要求前一个操作的执行结果对后一个操作可见。

一个happens-before规则对应一个或多个编译器和处理器重排序规则。

在探索智慧旅游的新纪元中,个集科技、创新服务于体的整体解决方案正悄然改变着我们的旅行方式。智慧旅游,作为智慧城市的重要分支,旨在通过新代信息技术,如云计算、大数据、物联网等,为游客、旅游企业及政府部门提供无缝对接、高效互动的旅游体验管理模式。这方案不仅重新定义了旅游行业的服务标准,更开启了旅游业数字化转型的新篇章。 智慧旅游的核心在于“以人为本”,它不仅仅关注技术的革新,更注重游客体验的提升。从游前的行程规划、信息查询,到游中的智能导航、个性化导览,再到游后的心情分享、服务评价,智慧旅游通过构建“云多屏”的服务平台,让游客在旅游的全过程中都能享受到便捷、个性化的服务。例如,游客可以通过手机APP轻松定制专属行程,利用智能语音导览深入了解景点背后的故事,甚至通过三维GIS地图实现虚拟漫游,提前感受目的地的魅力。这些创新服务不仅增强了游客的参感和满意度,也让旅游变得更加智能化、趣味化。 此外,智慧旅游还为旅游企业和政府部门带来了前所未有的管理变革。通过大数据分析,旅游企业能够精准把握市场动态,实现旅游产品的精准营销和个性化推荐,从而提升市场竞争力。而政府部门则能利用智慧旅游平台实现对旅游资源的科学规划和精细管理,提高监管效率和质量。例如,通过实时监控和数据分析,政府可以迅速应对旅游高峰期的客流压力,有效预防景区超载,保障游客安全。同时,智慧旅游还促进了跨行业、跨部门的数据共享协同合作,为旅游业的可持续发展奠定了坚实基础。总之,智慧旅游以其独特的魅力和无限潜力,正引领着旅游业迈向个更加智慧、便捷、高效的新时代。
内容概要:本文详细介绍了大模型的发展现状未来趋势,尤其聚焦于DeepSeek这创新应用。文章首先回顾了人工智能的定义、分类及其发展历程,指出从摩尔定律到知识密度提升的转变,强调了大模型知识密度的重要性。随后,文章深入探讨了DeepSeek的发展路径及其核心价值,包括其推理模型、思维链技术的应用及局限性。此外,文章展示了DeepSeek在多个行业的应用场景,如智能客服、医疗、金融等,并分析了DeepSeek如何赋能个人发展,具体体现在公文写作、文档处理、知识搜索、论文写作等方面。最后,文章展望了大模型的发展趋势,如通用大模型垂域大模型的协同发展,以及本地部署小模型成为主流应用渠道的趋势。 适合人群:对人工智能和大模型技术感兴趣的从业者、研究人员及希望利用DeepSeek提升工作效率的个人用户。 使用场景及目标:①了解大模型技术的最新进展和发展趋势;②掌握DeepSeek在不同领域的具体应用场景和操作方法;③学习如何通过DeepSeek提升个人在公文写作、文档处理、知识搜索、论文写作等方面的工作效率;④探索大模型在特定行业的应用潜力,如医疗、金融等领域。 其他说明:本文不仅提供了理论知识,还结合实际案例,详细介绍了DeepSeek在各个场景下的应用方式,帮助读者更好地理解和应用大模型技术。同时,文章也指出了当前大模型技术面临的挑战,如模型的局限性和数据安全问题,鼓励读者关注技术的持续改进和发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值