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

细说Java多线程之内存可见性

难度中级
时长57分
学习人数
综合评分9.63
181人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • 细说Java多线程之内存可见性——总结 II 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    1 采集 收起 来源:课程总结

    2016-08-26

  • 细说Java多线程之内存可见性——总结 I Ps1:共享数据的访问权限都必须定义为private。 Ps2:Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生。 Ps3:JAVA中对共享数据操作的并发控制是采用加锁技术。 Ps4:final关键字也可以保证内存可见性。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    1 采集 收起 来源:课程总结

    2016-08-26

  • 细说Java多线程之内存可见性——volatile使用注意事项 Ps:volatile没有synchronized使用广泛。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——volatile不能保证原子性 V Ps:number++;是不用try...catch...finally的,而是因为加了锁,代码运行完必须要解锁,所以才放的try里面。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——volatile不能保证原子性 IV Ps:原本可以写在“public synchronized void increase()”,因为上面有个sleep();本来就慢1s了,为了缩小锁的粒度(原子性的包装代码量),如图所示。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——volatile不能保证原子性 III 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——volatile不能保证原子性 II Ps:这是其中的可能情况。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——volatile不能保证原子性 I Ps:理论来讲,最后的值应该是500,但是因为num++;不是原子操作,且volatile关键字又没有原子性,所以偶尔会出现<500的情况。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——synchronized解决不可见的方案 1、原子性:由于锁的关系,线程之间不允许交叉执行;相当于给该线程(或当前运行的有且仅有一个的线程)加了一把锁,外面的线程无法进入,更别提互相交叉执行。 2、原子性+as-if-serial语义:线程不能交叉执行,重排序对于单线程不能影响运行结果。 3、可见性:共享变量的更新执行。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——synchronized实现可见性原理 IV 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——synchronized实现可见性原理 III 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——synchronized实现可见性原理 II Ps:只是有可能出现这种情况,不一定。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——synchronized实现可见性原理 I 1、synchronized实现:原子性(同步)、可见性。 2、JMM关于synchronized的两条规定: -线程解锁前,必须把共享变量的最新值刷新到内存中。 -线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主存中中重新读取最新的值。(注意:加锁与解锁需要是同意把锁) 3、线程执行互斥代码的过程: 1).获得互斥锁 2).清空工作内存 3).从主内存拷贝变量到最新副本到工作内存 4).执行代码 5).刷新变量到主内存 6).释放互斥锁 Ps1:线程解锁前对共享变量的修改在下次加锁时对其他线程可见。 Ps2:通过synchronized和volatile都可以实现可见性;所有的变量都存储在主内存中。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 细说Java多线程之内存可见性——可见性介绍 1.可见性:一个线程对共享变量值的修改,能够及时被其他线程看到。 2.共享变量:如果一个变量在多个线程的工作内存中都存在副本,那这个变量就是这几个线程的共享变量。 3.线程的工作内存:Java内存抽象出来的概念。 4.Java内存模型(JMM-Java Memory Model):描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的底层细节。 5.所有变量都存储在主内存中;而每个线程有自己独立的工作内存,在工作内存中的保存的该线程使用的变量(此变量是主内存中变量的副本)。 6.Java内存的规定: -线程对共享变量的所有操作都必须在自己的工作内存中进行,不可直接从主内存中读写; -不同线程之间无法直接访问其他线程工作内存中的变量,线程间的变量值的传递需要通过主内存。 7.共享变量可见性实现原理:线程1-->工作内存1中变量X-->更新到主内存中-->工作内存2中的变量X得到更新-->线程2。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    1 采集 收起 来源:可见性介绍

    2018-03-22

举报

0/150
提交
取消
课程须知
学习本课程前,你需要熟练掌握Java的基础语法,熟悉Java多线程的基础知识,以及synchronized实现线程同步的方法。
老师告诉你能学到什么?
1、内存可见性 2、指令重排序 3、as-if-serial语义 4、synchronized实现可见性 5、volatile实现可见性

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!