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

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

难度中级
时长57分
学习人数
综合评分9.63
181人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.4 逻辑清晰

已采纳回答 / sxian_wang
不会解决。static是修饰变量的,而这里不保证原子性的操作是自增造成的,这二者没啥关系。你好好理解下自增为什么不是一个原子性操作。

最新回答 / qq_可口可乐_4
线程是抢占式执行的,sleep意味着当前线程在一段时间内不执行操作,可是该线程的工作内存中已经得到了number,没有改变number的值意味着主内存中的值也没有改变,在sleep这段时间内其他线程又得到主内存中的number,这个number与sleep中的number可能一样(要是没有其它线程),这样的话这2个线程在最终执行完之后等于number++只执行一次

最新回答 / sxian_wang
对于这两个问题,回头重新看下内部类的相关知识,尤其是匿名内部类。

最新回答 / 雲中菩提
首先,你这休眠的是线程 main,并不会影响到synDemo读写线程的正常运行。而且就算你休眠的是synDemo的写线程,但只要它拿到了锁,那么读线程就会是堵塞状态,直到写线程释放了锁。最好还是先看看书或关于线程的博文,对同步,锁有所了解,然后再来看此视频。

最新回答 / 慕斯0128424
理论上只有sleep时间足够长,这么去玩的话是可行的。但是在实际商业项目中,你是用多线程的目的很大可能性是提升性能,你这么做岂不是背初衷而驰?

最新回答 / 快乐的时光
老师之所以这么做是让我们自己加上去分析以下结果。

最新回答 / 哏誰倆呐
设置断点不容易看出来效果的 给程序更多的反应时间 就不会出现那种重排序什么的额情况了呢

最新回答 / 慕斯卡4106679
保证可见性。如果不是单线程,就要考虑可见性问题
课程须知
学习本课程前,你需要熟练掌握Java的基础语法,熟悉Java多线程的基础知识,以及synchronized实现线程同步的方法。
老师告诉你能学到什么?
1、内存可见性 2、指令重排序 3、as-if-serial语义 4、synchronized实现可见性 5、volatile实现可见性

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消