package ch21concurrent.examples; import java.util.*; import ch21concurrent.annotations.*; /** * ServerStatusAfterSplit * <p/> * ServerStatus refactored to use split locks * * @author Brian Goetz and Tim Peierls */ @ThreadSafe public class ServerStatusAfterSplit { @GuardedBy("users") public final Set<String> users; @GuardedBy("queries") public final Set<String> queries; public ServerStatusAfterSplit() { users = new HashSet<String>(); queries = new HashSet<String>(); } public void addUser(String u) { synchronized (users) { users.add(u); } } public void addQuery(String q) { synchronized (queries) { queries.add(q); } } public void removeUser(String u) { synchronized (users) { users.remove(u); } } public void removeQuery(String q) { synchronized (users) { queries.remove(q); } } }