黑马程序员技术交流社区

标题: 关于类中方法问题,很疑惑 [打印本页]

作者: boboyuwu    时间: 2015-8-31 16:45
标题: 关于类中方法问题,很疑惑
如果一个类中有一个int i=10;  注意这是类中的成员变量,然后类中有个方法输出这个i的值,我想问一下, 假如输出这个方法前cpu被别的线程抢走了,并且别的线程改变了这个类中成员变量的值,假设变成了i=9,那么 当前面一个线程执行时输出的还是10还是9呢,这个问题的核心就在于,方法执行时,里面使用到的类中的成员变量就不变了还是随着成员变量的变化而自动变化。

可能有点抽象和饶,看不懂的同学就算了

作者: alogol    时间: 2015-8-31 17:41
会变吧,这不就是同步里面的问题吗
作者: boboyuwu    时间: 2015-8-31 17:54
alogol 发表于 2015-8-31 17:41
会变吧,这不就是同步里面的问题吗

我就不明白我运行时候出现这么个现象      这个现象只有一点说明线程2判断>0后再输出count的时候执行权被线程1夺走,线程1执行了4次后,线程2取得执行权,由于之前类中的成员变量i=100加载到了线程2中的run方法里,所以线程2取得执行权的之后直接打印一下售出票100,这是我的理解,这也是为什么100张票会卖出2次,这样的话就说明当成员变量加载到方法后,不管类中成员变量的值怎么变,方法里加载后的值都是不变的   ,这只是我的猜想我等会逐步验证一下

111111111111111111111111111111111111.png (10.01 KB, 下载次数: 0)

111111111111111111111111111111111111.png

作者: alogol    时间: 2015-8-31 19:39
boboyuwu 发表于 2015-8-31 17:54
我就不明白我运行时候出现这么个现象      这个现象只有一点说明线程2判断>0后再输出count的时候执行权被 ...

啊啊,那就应该是不变的,数据已经载入内存,但是没有取得cpu执行权这样?
作者: wyd1    时间: 2015-8-31 21:21
基本数据类型和引用数据类型是不同的啊
作者: syb012    时间: 2015-10-20 21:49
这得看他们作用的是不是堆内存里的同一个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2