不是静态的但是Locale的一个实例不能有两个引用同时属于两个线程吗?如果其中一个调用了hashCode()同时另一个writeObject()不就会出错了吗

解决方案 »

  1.   

    有道理,这个方法我没用过,不知道多个线程是否可能这样来调用你所说的方法
    但从方法本身来说,多线程的调用,有可能会引起数据的出错,如你所说。这也是锁定(synchronized标志)提出来的原因。
      

  2.   

    这个你肯定的用同步机制啊,负责怎么能行呢,这是对这几个数据结构(链表、队列、堆栈)在JAVA中应用时所提出的要求啊,其应用方式和多线程一个道理,你必须对你所操作的这些类型的数据结构保持同步,否则会出现这样的逻辑错误————运行结果和你的初始目标不一样!!!!!明白吗?
    我时个教JAVA的语言老师,类似的问题学生经常问到
      

  3.   

    To binny:
      你以下的写法是不正确的:synchronized(hashcode) {
            int temp = hashcode;
            hashcode = -1;
            out.defaultWriteObject();
            hashcode = temp;
                                  }
    因为synchronized程序块只能对对象的访问进行同步,基本类型是不允许的。而hashcode 是整型的基本类型。你再看看相关的资料
      

  4.   

    TO:albberk(山山) 能不能说得再明白点,我不理解你的观点,我是个笨学生,:P。TO:seace(飞鹤) 这个我没注意到,谢谢。对于这个问题,你有什么好的方法吗?前两天看JDK的原码,感觉有的地方写的不是很合适,但是不敢肯定。上个周末看了《java与模式》前几章,发现原来jdk中也有不正确的地方。所以现在才敢怀疑JDK ^_^大家有什么想法观点尽管说,共同学习