HashMap多线程不建议使用
来源:互联网 发布:淘宝药店的药是真的吗 编辑:程序博客网 时间:2024/04/30 05:19
package com.jay.test.map;import java.util.HashMap;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class MapTest {public static void main(String[] args) {final Map<Integer, Integer> map = new HashMap<Integer, Integer>();//final Map<Integer, Integer> map = new ConcurrentHashMap<Integer,Integer>();new Thread(new Runnable() {public void run() {map.put(1, 1);}}).start();new Thread(new Runnable() {public void run() {map.put(2, 1);}}).start();new Thread(new Runnable() {public void run() {map.put(3, 1);}}).start();System.out.println(map);}}
今天在网上看了下多线程使用HashMap会有问题,由于Hashmap不是线程安全的,多线程还是使用ConcurrenHashMap这个比hashtable
【线程安全的】效率更高的吧。带来的问题
1、数据有概率丢失,上面的程序运行了,40%的概率丢失数据。
{1=1, 2=1}
2、有概率出现异常信息,10%吧。
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.AbstractMap.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at com.jay.test.map.MapTest.main(MapTest.java:28)
鉴于以上问题还是使用ConcurrentHashMap吧。
0 0
- HashMap多线程不建议使用
- 不建议使用JPasswordField.getText()
- 高性能场景下,HashMap的优化使用建议
- 高性能场景下,HashMap的优化使用建议
- 不建议使用jquery的情况
- 不建议使用jquery的情况
- 不建议使用OR的情况
- 为什么不建议使用css @import
- 为什么不建议使用vector<bool>
- 不建议使用rowid作为sqlite主键
- Hadoop 为什么不建议使用 RAID?
- android 为什么不建议使用Thread.stop()
- Mysql为什么不建议使用join
- html不建议使用的元素
- android 为什么不建议使用Enum
- scala建议使用常量val,而不使用变量var
- scala中循环不建议使用while和do...while,而建议使用递归
- 多线程情况下建议使用while而不是if
- samba,iptables
- 第七届科技节电子设计大赛须知
- siegen程的android技能树之handler,looper,message
- LCD简介
- 【一天一道LeetCode】#21. Merge Two Sorted Lists
- HashMap多线程不建议使用
- JAVA遍历map的几种实现方法代码
- 在大字符串中返回一个子字符串的的位置
- Java断言
- 解决js跨域的问题
- image 圆角
- 随感
- 练习20:函数和文件操作的基本方法
- google官方上拉刷新