栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

J.U.C-1.并发特性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

J.U.C-1.并发特性

J.U.C 并发特性

JAVA里面进行多线程通信的主要方式就是 共享内存 的方式,共享内存主要的关注点有两个:可见性 和 有序性。加上复合操作的 原子性,可以认为JAVA的线程安全性问题主要关注点有3个(JAVA内存模型JMM解决了可见性和有序性的问题,而锁解决了原子性的问题):可见性、有序性、原子性

  • 原子性(Atomicity):在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败
  • 有序性(Ordering):程序执行的顺序按照代码的先后顺序执行(处理器可能会对指令进行重排序)
  • 可见性(Visibility):指在多线程环境下,当一个线程修改了某一个共享变量的值,其它线程能够立刻知道这个修改

① 重排序

指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。从JAVA源码到最终实际执行的指令序列,会经历下面3种重排序(主要流程):

指令重排序分类

  • 编译器优化的重排序:编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序;
  • 指令级并行的重排序:现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序;
  • 内存系统的重排序:由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能是在乱序执行的。

② 顺序一致性

顺序一致性内存模型是一个理论参考模型,在设计的时候,处理器的内存模型和编程语言的内存模型都会以顺序一致性内存模型作为参照。顺序一致性特征如下:

  • 一个线程中的所有操作必须按照程序的顺序来执行
  • (不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序。在顺序一致性的内存模型中,每个操作必须原子执行并且立刻对所有线程可见

下一篇:J.U.C-2.Unsafe

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号