并发编程的三大特性之可见性

简介: 并发编程的三大特性之可见性

可见性

  • CPU计算数据由于从内存中读取数据过慢,于是在CPU内部建立了L1,L2,L3三级缓存来直接让CPU从自身的缓存中读取数据。从而提高计算速度。
  • 每一个线程有自己单独的CPU三级缓存,遵循MESI协议

解决可见性的方法

  • 使用volatile关键字

  • volatile的内存语义
  • 针对volatile属性被写入,JMM会将当前线程的CPU缓存的数据及时刷新到主内存中
  • 针对volatile属性被读出,JMM会将当前线程CPU中的缓存置为无效,需要从主内存中重新获取值
  • 使用synchronized锁
    添加在这里是会失败的得不到预期的效果。



  • 使用Lock锁
  • Lock锁的实现是基于volatile实现,在内部进行加锁和释放锁,对一个由volatile修饰的state变量做加减操作。

  • final关键字实现
    final修饰的属性不能被修改
目录
相关文章
|
5天前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
17 1
|
17天前
|
存储 缓存 Java
【Java并发基础】Java内存模型解决有序性和可见性
【Java并发基础】Java内存模型解决有序性和可见性
|
2月前
|
缓存 安全 Java
多线程的三大特性:原子性、可见性和有序性
多线程的三大特性:原子性、可见性和有序性
43 0
|
2月前
|
安全 Java
并发编程的三大特性之有序性
并发编程的三大特性之有序性
15 0
|
2月前
|
Java
并发编程的三大特性之原子性
并发编程的三大特性之原子性
18 0
|
存储 缓存 SpringCloudAlibaba
JUC并发编程(一):Java内存模型(JMM)及三大特性:可见性、有序性、原子性
在当今高流量、高并发的互联网业务场景下,**并发编程技术**显得尤为重要,不管是哪一门编程语言,掌握并发编程技术是个人进阶的必经之路。时隔一个半月没有写技术博客文章,有点生疏了。。。闲话少叙,接下来我将围绕并发编程知识点进行总结讲解,这里从并发编程入门开始,讲述Java内存模型和并发的三大特性。
141 1
JUC并发编程(一):Java内存模型(JMM)及三大特性:可见性、有序性、原子性
|
2月前
|
消息中间件 Go
Go语言高级并发编程技术:深入探索同步原语与复杂并发模式
【2月更文挑战第6天】在Go语言中,除了基础的goroutine和channel之外,还提供了丰富的同步原语和高级并发模式。本文将深入探讨Go语言中的sync包、atomic包以及更复杂的并发模式,如管道、消息队列和生产者消费者模型。通过理解这些高级并发编程技术,我们可以更好地构建高性能、可扩展的并发系统。
|
7月前
|
安全 Java 编译器
Java并发编程学习3-可见性和对象发布
本篇介绍对象的共享之可见性和对象发布
70 2
Java并发编程学习3-可见性和对象发布
|
11月前
|
安全 Java 数据库
【并发编程特性】并发编程特性之五种特性的探讨
【并发编程特性】并发编程特性之五种特性的探讨
71 0
|
12月前
|
缓存 安全 Java
Java并发编程三大特性
导致并发程序出现问题的根本原因
87 0