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

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

难度中级
时长57分
学习人数
综合评分9.63
181人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • 不可见的原因: 1 线程的交叉执行 2,重排序结合交叉执行 3.共享变量未及时更新
    查看全部
  • 所有的变量都存储在主内存中; 线程对共享变量的所有操作都必须自自己的工作内存中进行
    查看全部
    0 采集 收起 来源:练习题

    2015-07-05

  • 1,可见性,共享变量,主内存,工作内存 2.线程只能与自己工作内存交互 3.线程无法访问其他工作内存
    查看全部
    0 采集 收起 来源:可见性介绍

    2015-07-05

  • 多线程中加入休眠状态就不会被排序导致错误了吗 ‘
    查看全部
    0 采集 收起 来源:练习题

    2015-06-30

  • 可见性:一个线程对共享变量值 的修改,能够及时地被其他线程看到 共享变量: 如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量
    查看全部
    0 采集 收起 来源:可见性介绍

    2015-06-29

  • 要在多线程中安全地使用volatile变量,必须同时满足: (1)对变量地写入操作不依赖当前值 不满足:number++ 、count = count*5 满足:boolean变量、记录温度变化的变量等 (2)该变量没有包含在具有其他变量的不变式中
    查看全部
  • While(Thread.activeCount()>1) { Thread.yield(); } //如果还有子线程在运行,主线程就让出CPU资源,直到所有的字线程都运行完了,主线程再继续往下执行
    查看全部
  • 线程写volatile变量的过程: (1)改变变成工作内存中volatile变量副本的值 (2)将改变后的副本的值从工作内存刷新到主内存 线程读volatile变量的过程: (1)从主内存中读取volatile变量的最新值到线程的工作内存中 (2)从工作内存中读取volatile变量的副本
    查看全部
  • 线程写volatile变量的过程: (1)改变线程工作内存中volatile变量副本的值 (2)将改变后的副本的值从工作内存刷新到主内存
    查看全部
  • 线程写volatile变量的过程: (1)改变变成工作内存中volatile变量副本的值 (2)将改变后的副本的值从工作内存刷新到主内存
    查看全部
  • 导致共享变量在线程间不可见的原因: (1)线程的交叉执行 (2)重排序结合线程交叉执行 (3)共享变量更新后的值没有在工作内存与主内存间及时更新
    查看全部
  • 重排序:代码书写的顺序与实际执行的顺序不同,指令重排序是编译器或处理器为了提高程序性能而做的优化
    查看全部
  • JMM关于synchronized的两条规定: (1)线程解锁前,必须把共享变量的最新值刷新到主内存中 (2)线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量需要从主内存中重新读取最新的值
    查看全部
  • 要实现共享变量的可见性,必须保证两点: (1)线程修改后的共享变量值能够及时从工作内存刷新到主内存中 (2)其他线程能够及时把共享变量的最新值从主内存更新到自己的工作内存中
    查看全部
  • JMM两条规定: (1)线程对共享变量的所有操作都必须在自己的工作内存中进行,不能直接从主内存中读写。 (2)不同线程之间无法直接访问其他线程工作内存中的变量,线程间变量值的传递需要通过主内存来完成
    查看全部
    0 采集 收起 来源:可见性介绍

    2015-06-28

举报

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

微信扫码,参与3人拼团

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

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