java concurrent /** 基于监视器模式的车辆追踪 */public class MonitorVehicleTracker {private final Map locations;public MonitorVehicleTracker(Map locations) { this.locations = deepCopy(locations); } public synchronized Map getLoca
/** 基于监视器模式的车辆追踪 */ public class MonitorVehicleTracker { private final Maplocations; public MonitorVehicleTracker(Map locations) { this.locations = deepCopy(locations); } public synchronized Map getLocations() { return deepCopy(locations); } public synchronized MutablePoint getLocation(String id) { MutablePoint loc = locations.get(id); return loc == null ? null : new MutablePoint(loc); } public synchronized void setLocation(String id, int x, int y) { MutablePoint loc = locations.get(id); if (loc == null) System.out.println("No such ID: " + id); loc.x = x; loc.y = y; } private Map deepCopy(Map m) { Map result = new HashMap (); for (String id : m.keySet()) { result.put(id, new MutablePoint(m.get(id))); } return Collections.unmodifiableMap(result); } }