猿问

请问java并发编程中这种变量怎么处理?如下图

    /** 
     * 从指定节点Element node开始,递归遍历其所有子节点 
     */  
    static Map<String, Object> map2 = new HashMap<String,Object>();
    public static Map<String, Object> getNodes(Element node) {  
        System.out.println("当前节点:" + node.getName() + ":" + node.getTextTrim());// 当前节点名称  
        map2.put(node.getName(), node.getTextTrim());
        // 递归遍历当前节点所有的子节点  
        List<Element> listElement = node.elements();// 所有一级子节点的list  
        for (final Element e : listElement) {// 遍历所有一级子节点  
            getNodes(e);// 递归  
        }  
        return map2;
    }

并发的时候这个map2怎么处理?加上volatile关键字可以吗?

static volatile Map<String, Object> map2 = new HashMap<String,Object>();
青春有我
浏览 378回答 2
2回答

富国沪深

使用ConcurrentHashMap:new ConcurrentHashMap<String,Object>();或者Collections的静态内部类synchronizedMap:Collections.synchronizedMap都可以
随时随地看视频慕课网APP

相关分类

Java
我要回答