解决方案 »

  1.   

    其实synchronized也不支持基本类型的封装类,如Long、Integer等都不支持,原因是
    Long data;
    ......
    synchronized(data) {
        data--;
    }
    上面实际上是执行了data = new Long(data-1);
    data这个对象都已经变了,怎么去synchronized ??
      

  2.   


    那如果我现在就想实现这个同步,就是只对一个long类型的变量进行锁。我使用Long已经转变一次了,难道我要再加一个String对象来专门锁?这好像太费劲了吧我的需求就是锁一个long类型的变量。大家给点建议,谢谢~
      

  3.   


    那如果我现在就想实现这个同步,就是只对一个long类型的变量进行锁。我使用Long已经转变一次了,难道我要再加一个String对象来专门锁?这好像太费劲了吧我的需求就是锁一个long类型的变量。大家给点建议,谢谢~定义一个成员变量Object mObj;
    每次对你的long变量操作的时候,
    synchronized(mObj) {
        data--;//假如这是long变量操作
    }
      

  4.   

    楼主刚开始学习java吧,这个初期疑惑是正常呢,记住一点就好了,需要使用对象的地方基本类型是不行的,即使jdk1.5以后你或许把基本类型传给基本类型对应的装箱类型是可以通过的,底层做运算的还是对象,祝楼主学习进步,加油
      

  5.   


    嗯,菜鸟一枚正在学java中- -
      

  6.   

    把那个long  作为成员变量 封装到对象里, 在对象里加方法同步就是了,如买票系统,我还不知道基本数据类型包装类不能同步,长知识了,以为类都可以synchronized