当前位置:编程学习 > JAVA >>

大神帮我看看这是神马情况

在不加同步的前提下为什么会出现两个10,这是神马情况。
--------------------编程问答-------------------- 难不成不是?! --------------------编程问答-------------------- 简单的成员属性读写虽然很快,但是程序刚启动的时候,可能还是会出现同时读取的现象。

可以想象成百米赛跑的人,在start之前,都在同一个起跑线上,刚刚起跑时,可能运动员都在一条线上跑的。 --------------------编程问答-------------------- 这也是线程同步问题。
多运行几次结果就不一样了。
两个10的原因:以下是猜测
因为cpu会在线程间来回快速的切换。获得cpu的线程才会执行。
Thread-1  10:d1先执行到输出,当d1输出完还来不及ticket--时,cpu就让给d了。
Thread-0  10:d执行到输出,还没ticket--cpu又回到d1了
后边要是闲的蛋疼的话,自己猜吧 --------------------编程问答-------------------- 你把ticket--拿出来单独写一行再运行看看 --------------------编程问答-------------------- 这个现象是正常情况。当然,并不是每次都会出现的,只是出现的概率会很大而已。
至于多个线程访问共享数据区域时,造成的数据不同步问题,涉及到操作系统进线程切换和数据缓存等知识。
--------------------编程问答-------------------- 线程同步问题,没加锁导致的,同时访问了一个变量ticket --------------------编程问答-------------------- 想知道具体的原理
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,