java的HashMap中,程序初始化的时候就对其赋了值,后面的操作都只是对其做get操作,不做put,remove之类的操作,在多线程的环境下是否会有并发问题?

解决方案 »

  1.   

    会啊,比如说A和B线程同时插入一个key为"123"的,多线程有可能造成插入两个重复的
      

  2.   

    楼主你这个初始化 和  get是两个操作。  如果是只初始化1次 ,后面全是读操作就没有问题,如果每次进来都要初始化,再读就会有问题。    A线程初始化,在读的时候,  B线程又初始化了。 A读的时候可能就会有问题。
      

  3.   

    首先,初始化和get是两个操作。单纯的get操作是不会有线程安全问题的,因为不修改资源就不造成共享资源的竞争。初始化操作你要自己判断下,你的初始化操作是否会有并发情况,如果有的话,那初始化操作就会有并发问题
      

  4.   

    多线程同时执行进行初始化和赋值的操作会出现并发的问题;
    jdk有提供多线程下的map  ConcurrentHashMap就是解决多线程并发
      

  5.   

    Hashtable