理解JAVA内存模型
2024-09-18 01:33:08
实际上java内存模型是如上图所示一样
每个线程有自己的栈内存,存放共享对象的副本,本地变量
每个线程自己的本地变量是不可见的,但是共享对象对每个线程都是可见的。
如果想实现线程通信的话,
线程对共享对象的修改,实际上是首先对本地副本修改,然后修改主内存,堆内存,通信线程再去修改。
如果想保证线程之间的共享对象的可见性, 可以采用volidate关键字修饰, 他强制线程每次从主存读取,修改后立刻刷新到主存
而保证防止多个线程同时修改本地变量后,主内存防止产生错误数据, synchronize关键字可以解决
最新文章
- Spring 设值注入 构造注入 p命名空间注入
- sql left join on
- Android DrawerLayout 高仿QQ5.2双向侧滑菜单
- CANopen笔记1
- MVC - 学习总目录
- 参数TFilterPredicate 类型说明
- JS 多种变量定义
- jQuery validate api(转)
- android ViewStub延时渲染的应用
- 用C#实现微信“跳一跳”小游戏的自动跳跃助手
- Python 词云分析周杰伦《晴天》
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application问题解决方案参考
- 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
- (网页)readonly和disabled的区别(转)
- golang 命令行cobra妙用
- pgm6
- glValidateProgram只用于调试
- mysql操作常用技巧
- 51nod 1103 N的倍数
- Listbox Binding ItemsSource
热门文章
- HighCharts之2D带Label的折线图
- JavaScript去除日期中的“-”
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext
- Caused by: java.lang.ClassNotFoundException: com.mchange.v2.ser.Indirector
- Linux显示登入系统的帐号名称和总人数
- sourcetree的使用
- webpack学习(二):先写几个webpack基础demo
- C#构造函数与析构函数--C#基础
- 【转载】 Spark性能优化:资源调优篇
- 【BZOJ4566】找相同字符(后缀数组)