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