package com.xzz.tread; import lombok.extern.slf4j.Slf4j; import java.io.UnsupportedEncodingException; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.net.URLDecoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @Slf4j public final class CommonUtil { public CommonUtil() { } public static String getUUID() { return UUID.randomUUID().toString().replace("-", "").toUpperCase(); } public static String getPid() { RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); String name = runtime.getName(); // format: "pid@hostname" try { //return name.substring(0, name.indexOf('@')); return name; } catch (Exception e) { return "pid"; } } public static String getDate(String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(new Date()); } public static String getHostName() { RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); String name = runtime.getName(); // format: "pid@hostname" try { return name.substring(name.indexOf('@') + 1); //return name; } catch (Exception e) { return "hostName"; } } }
package com.xzz.tread; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReentrantLock; public class TraceUtils { private static MapserialMap = new HashMap (); private static ReentrantLock traceLock = new ReentrantLock(); private static String lastTime = ""; private static String getTime(){ DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); return df.format(new Date()); } private static String getSerialNo(String nodeNode,String currentTime,int length){ traceLock.lock(); Integer serialNo = serialMap.get(nodeNode); if(lastTime.equals(currentTime)){ serialNo += 1; }else{ serialNo = 1; lastTime = currentTime; } serialMap.put(nodeNode, serialNo); traceLock.unlock(); return String.format("%0"+length+"d",serialNo); } public static String getTraceId(String nodeNode){ String time = getTime() + (int) ((Math.random() * 9 + 1) * 100000); return time + nodeNode + getSerialNo(nodeNode,time,6); } }
package com.xzz.tread; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; @RestController @Slf4j public class TreadCeShi { private static final String NODE_NAME = CommonUtil.getPid(); @RequestMapping("TreadCeShi") private String TreadCeShi() { //生成线程号 Thread.currentThread().setName(TraceUtils.getTraceId(NODE_NAME)); String name = Thread.currentThread().getName(); System.out.println(name); return "s [" + name + "]"; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)