多线程创建线程号,用时

多线程创建线程号,用时,第1张

线程创建线程号,用时
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 Map serialMap = 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 + "]";
    }




}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5161602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存