Multithreading 我可以用多个线程同时读取ConcurrentHashmap吗?

Multithreading 我可以用多个线程同时读取ConcurrentHashmap吗?,multithreading,concurrency,hashmap,thread-safety,concurrenthashmap,Multithreading,Concurrency,Hashmap,Thread Safety,Concurrenthashmap,对于一个线程,我在获取元素时没有任何问题。但我想从ConcurrentHashmap中同时获得多个线程。如果地图有1,2,3,4,5,6,7,8;当我使用两个线程从ConcurrentHashMap获取元素时,我得到2,2,4,4,6,6,8,8。有人能帮我吗?我说的每个线程(ReadFromBuffer类的对象)的内部 我有多个线程(这可能是个问题) for(int i=1;i您希望得到什么结果?从hashmap(并发或其他)读取不会删除已读取的值。听起来您想要一个队列(可能是一个Concur

对于一个线程,我在获取元素时没有任何问题。但我想从ConcurrentHashmap中同时获得多个线程。如果地图有1,2,3,4,5,6,7,8;当我使用两个线程从ConcurrentHashMap获取元素时,我得到2,2,4,4,6,6,8,8。有人能帮我吗?我说的每个线程(ReadFromBuffer类的对象)的内部

我有多个线程(这可能是个问题)


for(int i=1;i您希望得到什么结果?从hashmap(并发或其他)读取不会删除已读取的值。听起来您想要一个队列(可能是一个ConcurrentQueue)。如果我从缓冲区(或带有其他单词的队列)读取一些值,我需要它我删除它是因为我不想让下一个线程再次读取它。完整的场景是:一个线程写入缓冲区,多个线程同时读取它。@JUnitorJava:你的评论毫无意义。你解释说你不使用队列是因为你想要的正是队列的功能。我解决了BlockedQueue的问题。谢谢大家的想法使用队列。
while(it.hasNext())
    {
        if(!it.hasNext()) continue;
        Map.Entry pairs = (Map.Entry)it.next();
         s=(String) pairs.getValue();.....
for(int i=1;i<=threadcount;i++)
      {   
        Thread t2 = new Thread(new ReadFromBuffer(map),"" );
        t2.start();
      }