将全局变量作为java中的方法参数传递

时间:2017-04-21 04:26:25

标签: java concurrency global-variables

这可能是一个非常愚蠢的问题,但我仍然想知道我写的代码是否正确。

public class Test {
    Map<String, Queue<Object>> myMap = new HashMap<>();
    Map<String Queue<Object>> myMap2 = new HashMap<>();

    Test() {
        Queue<Object> testQueue = new ConcurrentLinkedQueue<>();
        Queue<Object> testQueue2 = new ConcurrentLinkedQueue<>();
        for (int i=0; i< 10; i++) {
            String myString = "myhello" + i;
            String myString2 = "blahsd" + i;
            testQueue.add(myString);
            testQueue2.add(myString2);
        }

        myMap.put("map1", testQueue);
        myMap2.put("map2", testQueue2;
    }

    public static void main(String args[]) {
        Object obj = myMap.get("map1").poll();
        //dO operation on obj
        ...
        ...
        ...
        addObjectToMap(obj, myMap);


        Object obj2 = myMap2.get("map2").poll();
        //dO operation on obj
        ...
        ...
        ...
        addObjectToMap(obj2, myMap2);
    }

    public void addObjectToMap(Object obj, Map<String, Queue<Object>> params) {
        //getMapForKey() will return the available keys in the Map passed as argument to this method
        params.get(getMapForKey()).add(obj);
    }
}

现在,我想知道是否可以将全局变量作为参数传递给方法,以及更新方法中的值是否会实际更新全局变量。

另一个问题是,如果我运行此代码多线程,并发会导致任何竞争条件,这将阻止使用实际值更新映射吗?

0 个答案:

没有答案