继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

Be_Better
关注TA
已关注
手记 6
粉丝 1
获赞 7

内存模型:

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

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


原子操作:

    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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP