New file |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |