程序用到一个static HashMap储存一些数据,有两个线程会访问到它,这两个线程是不相干的,一个是用来对不断对HashMap里的时间计时,另一个是主线程,用来增加或删除HashMap里的元素,现在可能会出现这种情况:就是两个线程同时操作此变量,因此会发生异常java.util.ConcurrentModificationException
请问有什么办法解决?使同一时间只能有一个线程操作此变量,synchronized好像只能对同一个Object加锁

解决方案 »

  1.   

    在涉及到这个Map的线程中,synchronized这个Map就行了
      

  2.   

    可是此Map是静态的啊,不是对象,synchronized针对的只是对象,用Collections.synchronizedMap(srcMap)是生成一个新的Map Object了,跟我的意图不一致啊,我想要的是要在不同的类里的不同的线程操作此静态变量啊
      

  3.   

    很简单啊,在操作该map的地方用此map对象锁住就可以了:public teturntype  method(){
        synchronized(ClassName.fielName){
           ....
        }
    }