学通JAVA的24堂课光盘源文件的11.16中的zmhh里的数据显示不一样
老师您好:
为什么有的时候运行显示200,200 有的时候显示190,200 这个总是课本上的吧 没有修改
书上说的线程中不使用同步值会出现错误,线程中if()里面的数据为什么不会出现错误呢?
不会就说不会 什么叫看不懂啊????有图片看了没 有没有耐心的答复人
无语_mrkj
学分:3155 LV11
书中的这个程序是没有问题,也就是说运行结果出现不一样的情况是正常的,原因是,当同时开启两个线程时,可能会出现并发的情况,也就是,线程1和线程2同时向这个账户存钱,最后这个账户只记录一个线程的存入金额,另一笔钱就丢了,而使用这个原子变量就可以避免这个问题。
当运行程序时,如果出现两个都是200的情况,就是出现了错误,也就是并发,如果不使用原子变量,那么账户的金额应该是190,但是使用原子变量后,最后的金额就是200,所以两个线程的存款都没有丢失。