我试图开发一个程序,它接收存储在地图中的数据请求。地图在主方法中声明,如下所示:在主线程中创建并传递到新线程的地图对象的正确同步
Map m = Collections.synchronizedMap(new HashMap());
synchronized(m) {
while (listening) {
new BrokerLookupServerHandlerThread(serverSocket.accept(), m).start();
}
}
用于BrokerLookupServerHandlerThread代码获取输入,并且使得对象的变量之一。如果我在这堂课中使用它,原始地图是否也会更新?我明白Java是通过价值传递的,(我习惯于C/C++),所以我只是想确定这个同步对象的实现是否有意义。
private Socket socket = null;
//private String t ="MSFT";
public Map m;
public BrokerLookupServerHandlerThread(Socket socket, Map m) {
super("NamingServerHandlerThread");
this.socket = socket;
this.m = m;
System.out.println("Created new Thread to handle client");
}
感谢您的帮助。
对于原始地图正在更新的问题,我建议您自己尝试一下,看看会发生什么。没有必要在理论层面上进行这种讨论:) – 2011-01-24 08:23:17