java 线程问题
我把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内存模型,以及其他的原因

然后每个线程运行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内存模型,以及其他的原因

...全文
相关推荐
Java线程池及观察者模式解决多线程意外死亡重启问题
Java线程池及观察者模式解决多线程意外死亡重启问题,附件含两个要运行代码!
个人总结40个Java多线程面试问题和答案
个人总结40个Java多线程面试问题和答案,很全面,让你不再担心多线程的面试问题。
完美解决Java中的线程安全问题
下面小编就为大家带来一篇完美解决Java中的线程安全问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java多线程模拟售票程序和线程安全问题
本篇文章给大家分享了Java多线程模拟售票程序和线程安全问题的相关知识点,对此有兴趣的朋友可以参考学习下。
Java SimpleDateFormat线程安全问题原理详解
主要介绍了Java SimpleDateFormat线程安全问题原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


Java SE
