HashMap线程不安全,原理: (在多线程操作时,才会有不安全的体现),多线程操作同一个map对象,
可能会有键重复的现象
解决: 给put操作,加上锁,此时,a线程在添加元素,b线程等着,a线程添完元素,b线程再添加
键重复,原因是: put操作中,通过校验后,添加元素前,可能被另一个线程抢走,所以键可能会重复添加
具体方法:
使用同步代码块时,不同的代码块,需要被同一对象锁起来,才会有效果
1)关键字: synchronized(Object o); // 若一个对象,可以传this
2)参数: Object 为锁对象,锁一致才能有效
3){}: 需要被同步的代码块
|
|