지도에 저장된 데이터에 대한 요청을하는 프로그램을 개발하려고합니다. 아래와 같이 맵이 기본 방법에 선언된다메인 스레드에서 생성되고 새 스레드로 전달 된 맵 객체의 올바른 동기화
는Map m = Collections.synchronizedMap(new HashMap());
synchronized(m) {
while (listening) {
new BrokerLookupServerHandlerThread(serverSocket.accept(), m).start();
}
}
BrokerLookupServerHandlerThread위한 코드 입력을 받아 그 객체의 변수 일 수있다. 이 클래스에서 사용하면 원본지도도 업데이트됩니까? 나는 자바가 값으로 전달된다는 것을 이해한다. (나는 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");
}
도움 주셔서 감사합니다.
원래지도가 업데이트되는 것에 대한 질문은 직접 시도하고 어떤 일이 발생하는지 확인하는 것이 좋습니다. 이론적 인 수준에서 토론의 이런 종류를 유지할 필요가 없습니다 :) –