java 线程问题

沐纪尘 沐纪尘 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我把java核心编程思想的线程同步的银行转账代码加了几句测试代码,用来测试在线程进入Bank类bank对象的transfer方法的同步代码区域前后对bank对象的num成员的改变。

然后每个线程运行run方法时会调用bank对象的transfer方法

在transfer方法中会把线程ID赋值给num,代表num成员发生变化

我开了十个线程进行对transfer方法的使用,每个线程start后,线程9号执行到第3句输出语句(此时num为0)然后被剥夺运行权,

**重点到了,此时轮到线程4号运行,它改变num的值,把ID值为14赋值给num,此时num==14
问题如下图

望大神指点一下为什么又轮到线程9号执行时这第4句输出(0++++++++++++++4Thread[Thread-9,5,main])num还是0到下一句第5句(14++++++++++++++5Thread[Thread-9,5,main])num就变成14了,是否涉及到java内存模型,以及其他的原因

...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
沐纪尘
Java SE 62,620 成员 307,251 内容