0 0

成员变量的一个问题0

public class Test implements ITest {
	private Map<String,String> map = new HashMap<String, String>();
	private void changeMap(String id,String num){
		map.put("id",id);
		map.put("num", num);
		//接下来有很长的一些逻辑代码
	}
	public void queryMap(String id,String num){
		changeMap(id,num);
		System.out.println(map.get("id"));
		System.out.println(map.get("num"));
	}
}


当大量访问的时候有没可能map.get("id")取到的值是上一次的。

问题补充:改成
public void queryMap(String id,String num){
        map = new HashMap<String, String>();
        changeMap(id,num); 
        System.out.println(map.get("id")); 
        System.out.println(map.get("num")); 
    } 
情况是否有所改变
2012年9月19日 20:18

2个答案 按时间排序 按投票排序

0 0

并发的问题引起的
简单点,可以用ConcurrentHashMap这个实现类,它是线程安全的

Map<String, String> map = new ConcurrentHashMap<String, String>();

2012年9月20日 22:32
0 0

这是正常的 并发访问嘛

即假设我们两个线程

A                                B
queryMap

                                 queryMap
                                 changeMap

changeMap
                                  System输出A线程的


防止这种情况是加锁

2012年9月19日 20:22

相关推荐

Global site tag (gtag.js) - Google Analytics