package com.zy.core.cache;
|
|
import com.zy.core.ThreadHandler;
|
import com.zy.core.enums.SlaveType;
|
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
/**
|
* 线程缓存容器
|
* Created by vincent on 2020/8/4
|
*/
|
public class SlaveConnection {
|
|
private static final String _LINK = "_";
|
|
private static final Map<String, ThreadHandler> conContain = new ConcurrentHashMap<>();
|
|
public static void put(SlaveType type, Integer id, ThreadHandler threadHandler) {
|
String key = toKey(type, id);
|
remove(type, id);
|
conContain.put(key, threadHandler);
|
}
|
|
public static ThreadHandler get(SlaveType type, Integer id) {
|
return conContain.get(toKey(type, id));
|
}
|
|
public static void remove(SlaveType type, Integer id) {
|
ThreadHandler threadHandler = get(type, id);
|
if (null == threadHandler) {
|
return;
|
}
|
conContain.remove(toKey(type, id));
|
threadHandler.close();
|
}
|
|
public static Integer remove(ThreadHandler threadHandler) {
|
if (null == threadHandler) {
|
return null;
|
}
|
String key = null;
|
for (Map.Entry<String, ThreadHandler> entry : conContain.entrySet()) {
|
if (entry.getValue() == threadHandler) {
|
key = entry.getKey();
|
break;
|
}
|
}
|
if (null != key) {
|
SlaveType type = SlaveType.findInstance(key);
|
Integer id = Integer.parseInt(key.split(_LINK)[1]);
|
remove(type, id);
|
return id;
|
} else {
|
return null;
|
}
|
}
|
|
private static String toKey(SlaveType type, Integer id) {
|
return type.toString() + _LINK + id;
|
}
|
|
}
|