为HashMap的不正确使用所导致。HashMap在多线程环境下使用不安全。
// 使用静态HashMap作为联系人数据缓存,key为手机号码.
private static Map<String, TDxptLxrgl> lxrData = new HashMap<String, TDxptLxrgl>();
多线程环境下不同步HashMap可能导致如下问题:
1、多线程put操作后可能导致get死循环。
2、多线程put操作的时候可能导致元素丢失。
解决方法:
1、在多线程环境下使用ConcurrentHashMap。
2、加入同步代码。
private static Map<String, TDxptLxrgl> lxrData = new ConcurrentHashMap<String, TDxptLxrgl>();
//可能引起并发问题的代码块加
synchronized(lxrData){
// 对lxrData进行put操作。
}