public static double sub(double d1,double d2){ 
        BigDecimal bd1 = new BigDecimal(Double.toString(d1)); 
        BigDecimal bd2 = new BigDecimal(Double.toString(d2)); 
        return bd1.subtract(bd2).doubleValue(); 
    } 此方法如果在多线程的情况下是否存在安全问题

解决方案 »

  1.   

    Donde Voy Java 群组
    1号: 82085373
    2号: 55191814
    3号: 89238748
    4号: 56418364
    5号: 157181129
    6号: 74671714请勿重复加群......
      

  2.   

    补充,如果存在共享的资源,如果方法内没有加锁,那是很有可能的,static也会出现线程问题!
      

  3.   

    比如说,如果一个类中,有一个静态变量。那么这个静态变量就是这个类的共享资源。
    再比如说,如果你要设计一个银行系统,用户的存款,就是一个共享资源。因为,当用户取钱时,要先查看他账户所剩的余额,若已经没钱了,则不能取成负的。这个例子在设计时,若不注意线程安全:则可能出现下列情况:
    A:剩余100元
    查询A,剩余100元
      查询A,剩余100元
      取出100元
    取出100元
    若是如此的话,系统最后会发现账户A的存款为-100元。造成此问题的原因,就是一个典型的线程完整性问题。