小编use*_*100的帖子

Hashmap坚持得到

我对HashMap有一个奇怪的问题.
有多个线程访问相同的hashmap(不是线程安全).

有时候,这个过程会被卡住.

当我检查线程堆栈时,我看到许多线程处于状态:

java.lang.Thread.State: RUNNABLE
    at java.util.HashMap.get(HashMap.java:303) 
Run Code Online (Sandbox Code Playgroud)

注意这种情况非常罕见.并且无法按需复制.

为什么会卡住?

hashmap上没有同步.

键是字符串

java multithreading hashmap

5
推荐指数
1
解决办法
4928
查看次数

LinkedBlockingQueue .take()表现

我使用的LinkedBlockingQueue是多个线程填充,项目数量很大(数千万个对象).

LinkedBlockingQueue.take()花费大量时间(通过分析器检查) - 56%的时间.
队列永远不会空!

什么会影响take()方法的性能?

更新:我在处理take()结果的代码中做了一些更改,我还将take()放到另一个线程中,性能几乎提高了50%.

我不明白这是怎么可能的,因为我没有改变推杆的任何逻辑......

更新:

我在调用take()之前计算了队列已满的次数:
使用原始代码,90%的调用队列已满.
通过改进的代码,13%的呼叫队列已满.

java multithreading

0
推荐指数
2
解决办法
1477
查看次数

标签 统计

java ×2

multithreading ×2

hashmap ×1