为了账号安全,请及时绑定邮箱和手机立即绑定

深入理解Java虚拟机-学习笔记-3内存模型和线程

标签:
Java JVM

内存模型:

内存中的变量,指的是实例字段、静态字段、构成数组对象的元素,不包括局部变量和方法参数这样的,因为这些是线程私有的。

规定变量只能存储在主内存中,另外线程有自己的工作内存。


原子操作:

    1.lock 锁定主内存中的变量

    2.unlock 解锁主内存中的变量

    3.read 变量从主内存到工作内存

    4.load 工作内存到变量副本

    5.use 变量副本到执行引擎

    6.assign 执行引擎到工作内存中的变量

    7.store 工作内存中变量到主内存

    8.write 变量值到主内存的变量

原子操作的规则很多,等价判定是先行原则。


volatile类型变量:use之前会刷新,边上use过程当中和回写时还是会引起线程安全问题。这是可见性。第二是禁止指令重排序。

关于其主要通过lock add这个空操作,它会刷新多个cpu的cache,形成内存屏障。(不想细致分析了没意义)

除volatile之外,synchronize和final也可以实现可见性

先行发生原则:A操作的影响能被B观察到,就是A先行与B。先行关系:很多


线程模型:java线程模型与平台是相关的

    1.KLT 1:1 LWP

    2.P 1:N UT

    3.混合型 UT N:M LWP

线程调度模型:

     1.协同式

    2.抢占式 Java选用

线程状态:

    1.new

    2.Runnable

    3.Waiting/Timed Waiting 调用wait()

    4.Blocked 等待锁

    5.Terminated


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
7

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消