摘要:
1.同步包括两方面:原子性和可见性。2.可见性:因为在多线程程序中,如果没有采用正确的同步,有些线程就会得到失效数据。Java内存模型要求,变量的读取操作和写入操作都必须是原子操作,但对于非volatile类型的long和double变量,JVM允许将64位的读操作或写操作分解为两个32位的操作。当读取一个非volatile类型的long变量时,如果对该变量的读操作和写操作在不同的线程中执行,那么很可能会读取到某个值的高32位和另一个值的低32位。即使不考虑失效数据问题,在多线程程序中使用共享且可变的long和double等类型的变量也是不安全的,除非用关键字volatile来声明它们,或者用 阅读全文
posted @ 2013-06-16 23:28
bells
阅读(685)
评论(0)
推荐(0)

浙公网安备 33010602011771号