zoukankan      html  css  js  c++  java
  • 非原子处理double和long

    出于Java编程语言存储器模型的目的,对非易失性long或 double的单个写入被视为两个单独的写入:每个32位半写一个。这可能导致线程从一次写入看到64位值的前32位,而从另一次写入看到第二次32位的情况。

    volatile longdoublevalues的写入和读取 始终是原子的。

    无论是否将它们实现为32位或64位值,对引用的写入和读取始终是原子的。

    某些实现可能会发现将64位上的单个写操作longdouble值划分为相邻32位值上的两个写操作很方便为了效率,这种行为是特定于实现的; Java虚拟机的实现可以自由地或原子地或分两部分执行写入longdouble值。

    鼓励Java虚拟机的实现避免在可能的情况下拆分64位值。鼓励程序员将共享的64位值声明为volatile或正确同步其程序以避免可能的复杂情况。

  • 相关阅读:
    with check option(视图 )
    @@ERROR
    事务处理
    含有自增序列的表中使用truncate与delete的不同结果
    Oracle中的通配符
    Java方法重载
    java递归方法
    Oracle中的for语句
    Uboot 2014.07 makefile分析
    linux内核目录结构
  • 原文地址:https://www.cnblogs.com/w1995w/p/10653376.html
Copyright © 2011-2022 走看看