实际上java内存模型是如上图所示一样

每个线程有自己的栈内存,存放共享对象的副本,本地变量

每个线程自己的本地变量是不可见的,但是共享对象对每个线程都是可见的。

如果想实现线程通信的话,

线程对共享对象的修改,实际上是首先对本地副本修改,然后修改主内存,堆内存,通信线程再去修改。

如果想保证线程之间的共享对象的可见性, 可以采用volidate关键字修饰, 他强制线程每次从主存读取,修改后立刻刷新到主存

而保证防止多个线程同时修改本地变量后,主内存防止产生错误数据, synchronize关键字可以解决

最新文章

  1. Spring 设值注入 构造注入 p命名空间注入
  2. sql left join on
  3. Android DrawerLayout 高仿QQ5.2双向侧滑菜单
  4. CANopen笔记1
  5. MVC - 学习总目录
  6. 参数TFilterPredicate 类型说明
  7. JS 多种变量定义
  8. jQuery validate api(转)
  9. android ViewStub延时渲染的应用
  10. 用C#实现微信“跳一跳”小游戏的自动跳跃助手
  11. Python 词云分析周杰伦《晴天》
  12. 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问题解决方案参考
  13. 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
  14. (网页)readonly和disabled的区别(转)
  15. golang 命令行cobra妙用
  16. pgm6
  17. glValidateProgram只用于调试
  18. mysql操作常用技巧
  19. 51nod 1103 N的倍数
  20. Listbox Binding ItemsSource

热门文章

  1. HighCharts之2D带Label的折线图
  2. JavaScript去除日期中的“-”
  3. Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext
  4. Caused by: java.lang.ClassNotFoundException: com.mchange.v2.ser.Indirector
  5. Linux显示登入系统的帐号名称和总人数
  6. sourcetree的使用
  7. webpack学习(二):先写几个webpack基础demo
  8. C#构造函数与析构函数--C#基础
  9. 【转载】 Spark性能优化:资源调优篇
  10. 【BZOJ4566】找相同字符(后缀数组)