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