monitorvehicletracker.java

来自「java concurrency in practice 源码. JAVA」· Java 代码 · 共 49 行

JAVA
49
字号
package net.jcip.examples;import java.util.*;import net.jcip.annotations.*;/** * MonitorVehicleTracker * <p/> * Monitor-based vehicle tracker implementation * * @author Brian Goetz and Tim Peierls */@ThreadSafe public class MonitorVehicleTracker {    @GuardedBy("this") private final Map<String, MutablePoint> locations;    public MonitorVehicleTracker(Map<String, MutablePoint> locations) {        this.locations = deepCopy(locations);    }    public synchronized Map<String, MutablePoint> 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)            throw new IllegalArgumentException("No such ID: " + id);        loc.x = x;        loc.y = y;    }    private static Map<String, MutablePoint> deepCopy(Map<String, MutablePoint> m) {        Map<String, MutablePoint> result = new HashMap<String, MutablePoint>();        for (String id : m.keySet())            result.put(id, new MutablePoint(m.get(id)));        return Collections.unmodifiableMap(result);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?