如果开启两个线程, 一个向hashmap中写数据, 另一个从hashmap中读数据。对于读线程而言, 读取的hashmap中的每一条记录是否能保证都是完整的,并且正确?

解决方案 »

  1.   

    不能,因为HashMap不是线程安全的,所以在多个线程同时读和写的时候,会报ConcurrentModificationException异常
      

  2.   

    想要线程安全的,你可以用ConcurrentHashMap
      

  3.   

    不能HashMap多线程操作不安全,往里面写数据的时候你必须对他加上锁,不让其他线程写,或者读
      

  4.   

    在执行读操作和写操作的时候 都加上同步锁  sychronized即可!
      

  5.   

    首先参考下这个页面:http://stackoverflow.com/questions/12444042/hashmap-safe-for-multithreaded-access-for-multiple-readers-and-one-single-writeHashMap 的文档是这样说的:当存在多个线程读取,且至少有一个线程进行修改时,必须在外部对它进行同步限制。进一步说,HashMap 的每个元素是以节点的形式保存的,而 put() 操作是一个复杂的过程,在这个过程中,节点内容会存在一系列不断变更的中间状态。如果这时候 get() 操作刚好读取了这个元素,那么它得到的就会是一个不正确的中间状态,可能导致返回错误的结果。所以简单来说,HashMap 是线程不安全的,应该避免多个线程访问同一个 HashMap 对象。
      

  6.   

    意思是通配符不但可以由shell解释,也可以由find程序解释@6楼