All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.benma666.sjsj.ljq.sjgl.XcglLjq Maven / Gradle / Ivy

/**
 * Project Name:myservice
 * Date:2019年9月19日
 * Copyright (c) 2019, jingma All Rights Reserved.
 */

package cn.benma666.sjsj.ljq.sjgl;

import cn.benma666.iframe.MyParams;
import cn.benma666.iframe.PageInfo;
import cn.benma666.iframe.Result;
import cn.benma666.myutils.StringUtil;
import cn.benma666.sjsj.web.DefaultLjq;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/**
 * 线程管理拦截器 
* date: 2019年9月19日
* @author jingma * @version 0.1 */ public class XcglLjq extends DefaultLjq { /** * 结束线程 */ public Result jsxc(MyParams myParams) { JSONArray idSet = myParams.getJSONArray($_SYS_IDS); Map maps = Thread.getAllStackTraces(); int jssl = 0; int jsyc = 0; for(Entry t:maps.entrySet()){ Thread th = t.getKey(); if(idSet.contains(Integer.valueOf(th.getId()+""))){ try { th.stop(); jssl++; } catch (Exception e) { log.error("结束线程异常:"+th.getName(), e); jsyc++; } } } String msg = "结束线程数:"+jssl; if(jsyc>0){ msg+=",其中结束异常数:"+jsyc; } return success(msg); } /** * 中断线程 */ public Result zdxc(MyParams myParams) { JSONArray idSet = myParams.getJSONArray($_SYS_IDS); Map maps = Thread.getAllStackTraces(); int zdsl = 0; for(Entry t:maps.entrySet()){ Thread th = t.getKey(); if(idSet.contains(Integer.valueOf(th.getId()+""))){ th.interrupt(); zdsl++; } } return success("中断线程数:"+zdsl); } @Override public Result select(MyParams myParams) { //获取分页对象 PageInfo page = myParams.getObject(KEY_PAGE,PageInfo.class); if (StringUtil.isBlank(page.getOrderBy())) { //请求没有设置排序时,采用默认排序 page.setOrderBy(getSjdx().getMrpx()); } Map maps = Thread.getAllStackTraces(); List list = new ArrayList<>(); JSONObject yobj = myParams.getJSONObject(KEY_YOBJ); String sName = yobj.getString("name"); String sStack = yobj.getString("stack"); int id = yobj.getIntValue("id"); StringBuilder stck; for(Entry t:maps.entrySet()){ Thread th = t.getKey(); //支持根据线程名称搜索 if(StringUtil.isNotBlank(sName)&&!(th.getName().contains(sName))){ continue; } if(id!=0&&(th.getId()!=id)){ continue; } stck = new StringBuilder(); for (StackTraceElement st : t.getValue()){ stck.append(st.getClassName()).append(".").append(st.getMethodName()).append(":") .append(st.getLineNumber()).append("\n"); } if(StringUtil.isNotBlank(sStack)&&!(stck.toString().contains(sStack))){ continue; } JSONObject r = new JSONObject(); r.put("stack",stck.toString()); r.put("id", th.getId()); r.put("name", th.getName()); r.put("alive", th.isAlive()+""); r.put("daemon", th.isDaemon()+""); r.put("state", th.getState().name()); r.put("interrupted", th.isInterrupted()+""); list.add(r); } page.setList(list); page.setTotalRow(list.size()); return success("获取线程情况成功",page); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy