使用读写锁
private static final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
-> 开启 服务注册 (使用 写 锁)
//服务的注册
public static void doRegist(String serviceId, String host) { //悲观写
try {
readWriteLock.writeLock().lock(); //写锁
registryMap.put(serviceId, host);
} finally {
readWriteLock.writeLock().unlock();//需要手动释放写锁
}
}
-> 开启 服务发现 (使用 读 锁)
public static String doLookup(String serviceId) { //乐观读
// System.out.println(serviceId);
try{
readWriteLock.readLock().lock();
return registryMap.get(serviceId);
}finally {
readWriteLock.readLock().unlock();
}
}
一般服务注册需要 服务的id名 和 地址
serverId 和 hosts
写一个map
-> Map<String,String> map = new HashMap<>(); 线程不安全
private static Map<String, String> registryMap = new HashMap<>();
或者 线程安全
private static Map<String, String> registryMap = new ConcurrentHashMap<>();