这可能是一个非常愚蠢的问题,但我仍然想知道我写的代码是否正确。
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);
}
}
现在,我想知道是否可以将全局变量作为参数传递给方法,以及更新方法中的值是否会实际更新全局变量。
另一个问题是,如果我运行此代码多线程,并发会导致任何竞争条件,这将阻止使用实际值更新映射吗?