當前位置: 首頁>>代碼示例>>Java>>正文


Java ThreadMXBean.getAllThreadIds方法代碼示例

本文整理匯總了Java中java.lang.management.ThreadMXBean.getAllThreadIds方法的典型用法代碼示例。如果您正苦於以下問題:Java ThreadMXBean.getAllThreadIds方法的具體用法?Java ThreadMXBean.getAllThreadIds怎麽用?Java ThreadMXBean.getAllThreadIds使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.lang.management.ThreadMXBean的用法示例。


在下文中一共展示了ThreadMXBean.getAllThreadIds方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: getAllThreadInfo

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
public static List<TInfo> getAllThreadInfo(){

        List<TInfo> threads = new ArrayList<>();
        ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
        long[] ids = threadBean.getAllThreadIds();
        ThreadInfo[] infos = threadBean.getThreadInfo(ids);
        for (ThreadInfo info : infos){
            long id = info.getThreadId();
            TInfo tInfo = new TInfo();
            tInfo.name = info.getThreadName();
            tInfo.id = id;
            tInfo.state = info.getThreadState();
            tInfo.cpuTime = threadBean.getThreadCpuTime(id);
            threads.add(tInfo);
        }
        Collections.sort(threads,new Comparator<TInfo>() {
            @Override
            public int compare(TInfo o1, TInfo o2) {
                return Long.compare(o2.cpuTime,o1.cpuTime);
            }
        });
        return threads;
    }
 
開發者ID:ctripcorp,項目名稱:cornerstone,代碼行數:24,代碼來源:ThreadingManager.java

示例2: dump

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
public static ThreadInfo[] dump(int maxDepth,boolean onlyDeadLock){
    ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();

    long[] ids ;
    if(onlyDeadLock) {
        ids = threadBean.findDeadlockedThreads();
    }else {
       ids = threadBean.getAllThreadIds();
    }
    if(ids !=null) {
        return threadBean.getThreadInfo(ids, maxDepth);
    }
    else {
        return null;
    }


}
 
開發者ID:ctripcorp,項目名稱:cornerstone,代碼行數:19,代碼來源:ThreadingManager.java

示例3: getAllThreadIDsExceptMain

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
/**
 * @return Set of the IDs of all threads that are started except the "main" thread.
 */
public Set<Long> getAllThreadIDsExceptMain() {

    ThreadMXBean thbean = ManagementFactory.getThreadMXBean();
    // get the IDs of all live threads.
    long[] threadIDs = thbean.getAllThreadIds();
    Set<Long> res = new HashSet<Long>();

    // get the IDs of all threads except main
    for (long id : threadIDs) {
        Thread t = getThread(id);
        if (t != null && !"main".equals(t.getName())) {
            res.add(id);
        }
    }

    return res;
}
 
開發者ID:Axway,項目名稱:ats-framework,代碼行數:21,代碼來源:ThreadUtils.java

示例4: main

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
public static void main(String args[]) {

        // get top-level thread group
        ThreadGroup top = Thread.currentThread().getThreadGroup();
        ThreadGroup parent;
        do {
            parent = top.getParent();
            if (parent != null) top = parent;
        } while (parent != null);

        // get the thread count
        int activeCount = top.activeCount();

        Map<Thread, StackTraceElement[]> stackTraces = Thread.getAllStackTraces();

        ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
        int threadCount = threadBean.getThreadCount();
        long[] threadIds = threadBean.getAllThreadIds();

        System.out.println("ThreadGroup: " + activeCount + " active thread(s)");
        System.out.println("Thread: " + stackTraces.size() + " stack trace(s) returned");
        System.out.println("ThreadMXBean: " + threadCount + " live threads(s)");
        System.out.println("ThreadMXBean: " + threadIds.length + " thread Id(s)");

        // check results are consistent
        boolean failed = false;
        if (activeCount != stackTraces.size()) failed = true;
        if (activeCount != threadCount) failed = true;
        if (activeCount != threadIds.length) failed = true;

        if (failed) {
            throw new RuntimeException("inconsistent results");
        }
    }
 
開發者ID:lambdalab-mirror,項目名稱:jdk8u-jdk,代碼行數:35,代碼來源:ThreadLists.java

示例5: main

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
public static void main(String args[]) {

        // Bug id : JDK-8151797
        // Use a lambda expression so that call-site cleaner thread is started
        Runnable printLambda = () -> {System.out.println("Starting Test");};
        printLambda.run();

        // get top-level thread group
        ThreadGroup top = Thread.currentThread().getThreadGroup();
        ThreadGroup parent;
        do {
            parent = top.getParent();
            if (parent != null) top = parent;
        } while (parent != null);

        // get the thread count
        int activeCount = top.activeCount();

        Map<Thread, StackTraceElement[]> stackTraces = Thread.getAllStackTraces();

        ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
        int threadCount = threadBean.getThreadCount();
        long[] threadIds = threadBean.getAllThreadIds();

        System.out.println("ThreadGroup: " + activeCount + " active thread(s)");
        System.out.println("Thread: " + stackTraces.size() + " stack trace(s) returned");
        System.out.println("ThreadMXBean: " + threadCount + " live threads(s)");
        System.out.println("ThreadMXBean: " + threadIds.length + " thread Id(s)");

        // check results are consistent
        boolean failed = false;
        if (activeCount != stackTraces.size()) failed = true;
        if (activeCount != threadCount) failed = true;
        if (activeCount != threadIds.length) failed = true;

        if (failed) {
            throw new RuntimeException("inconsistent results");
        }
    }
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:40,代碼來源:ThreadLists.java

示例6: doThreadMeasurement

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
/**
 * Does the thread measurement. For this, a single thread will be started and the results 
 * will be transfered to the specified {@link ThreadProtocolReceiver}.
 * 
 * @see ThreadProtocolReceiver
 *
 * @param timestamp the time stamp of the initial request
 * @param threadProtocolReceiver the {@link ThreadProtocolReceiver}
 */
public static void doThreadMeasurement(final long timestamp, final ThreadProtocolReceiver threadProtocolReceiver) {

	if (timestamp!=threadMeasurementLastTimeStamp) {

		// --- Remind this time stamp in order to avoid double work -------
		threadMeasurementLastTimeStamp = timestamp;
		
		// --- Start Thread to do0 the work -------------------------------
		Runnable threadMeasurement = new Runnable() {
			@Override
			public void run() {
				
				// --- Create a protocol instance -------------------------
				ThreadProtocol tp = new ThreadProtocol(timestamp, getLoadCPU());

				// --- Configure ThreadMXBean if possible and needed ------ 
				ThreadMXBean tmxb = ManagementFactory.getThreadMXBean();
		        if (tmxb.isThreadCpuTimeSupported()==true){
		        	if(tmxb.isThreadCpuTimeEnabled()==false){
		        		tmxb.setThreadCpuTimeEnabled(true);  
		        	}	
		        } else{
		        	System.err.println("ThreadTimeMeasurement not supported !!");
		        	threadProtocolReceiver.receiveThreadProtocol(null);
		        	return;
		        }
		        
		        // --- Do measurement ------------------------------------- 
		        String threadName;
		        long nanosCpuTime = 0L;
		        long nanosUserTime = 0L;
		        long factorMiliseconds = 1000000;

		        long[] threadIDs = tmxb.getAllThreadIds();
		        for (int i = 0; i < threadIDs.length; i++) {
		        	
		        	long threadID = threadIDs[i];
		            nanosCpuTime = tmxb.getThreadCpuTime(threadID);
		            nanosUserTime = tmxb.getThreadUserTime(threadID);
		            if (nanosCpuTime==-1 || nanosUserTime==-1) {
		            	continue;   // Thread died
		            }

		        	threadName = tmxb.getThreadInfo(threadID).getThreadName();
		        	// --- add times, converted to milliseconds, to thread-Protocol
		        	tp.getThreadDetails().add(new ThreadDetail(threadName, (nanosCpuTime/factorMiliseconds), (nanosUserTime/factorMiliseconds)));
		        }
		        // --- Send protocol to the requester of the measurement --
		        threadProtocolReceiver.receiveThreadProtocol(tp);
			}
		};
		// --- Start measurement thread -----------------------------------
		threadMeasurement.run();
	}
}
 
開發者ID:EnFlexIT,項目名稱:AgentWorkbench,代碼行數:65,代碼來源:LoadMeasureThread.java

示例7: printServerState

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
@Override
public String printServerState() {
	final long ONE_MB = 1024 * 1024;
	String newLine = "\n";
	StringBuilder result = new StringBuilder();

	try {
		long freeMemory = Runtime.getRuntime().freeMemory() / ONE_MB;   // 空閑內存
		long totalMemory = Runtime.getRuntime().totalMemory() / ONE_MB; // 當前內存
		long maxMemory = Runtime.getRuntime().maxMemory() / ONE_MB; // 最大可使用內存
		result.append(String.format("freeMemory: %s mb", freeMemory)).append(newLine);
		result.append(String.format(String.format("usedMemory: %s mb", (totalMemory - freeMemory)))).append(newLine);
		result.append(String.format("totalMemory: %s mb", totalMemory)).append(newLine);
		result.append(String.format("maxMemory: %s mb", maxMemory)).append(newLine);

		MemoryMXBean memoryMXBean = getMemoryMXBean();
		result.append(String.format("heap memory used: %s mb", memoryMXBean.getHeapMemoryUsage().getUsed() / ONE_MB)).append(newLine);
		result.append(String.format("heap memory usage: %s", memoryMXBean.getHeapMemoryUsage())).append(newLine);
		result.append(String.format("nonHeap memory usage: %s", memoryMXBean.getNonHeapMemoryUsage())).append(newLine);

		List<BufferPoolMXBean> buffMXBeans = (List<BufferPoolMXBean>) getPlatformMXBeans(BufferPoolMXBean.class);
		for (BufferPoolMXBean buffMXBean : buffMXBeans) {
			result.append(String.format("buffer pool[%s]: used %s mb, total %s mb", buffMXBean.getName(),
						buffMXBean.getMemoryUsed() / ONE_MB, buffMXBean.getTotalCapacity() / ONE_MB)).append(newLine);
		}

		List<GarbageCollectorMXBean> gcMXBeans = getGarbageCollectorMXBeans();
		for (GarbageCollectorMXBean gcBean : gcMXBeans) {
			result.append(String.format("%s 發生 %s 次 gc, gc 總共消耗 %s 毫秒", gcBean.getName(), gcBean.getCollectionCount(), gcBean.getCollectionTime())).append(newLine);
		}

		ThreadMXBean threadMXBean = getThreadMXBean();
		int nThreadRun     = 0;
		int nThreadBlocked = 0;
		int nThreadWaiting  = 0;
		for (long threadId : threadMXBean.getAllThreadIds()) {
			ThreadInfo threadInfo = threadMXBean.getThreadInfo(threadId);
			if (threadInfo.getThreadState() == Thread.State.RUNNABLE) {
				nThreadRun++;
			}
			if (threadInfo.getThreadState() == Thread.State.BLOCKED) {
				nThreadBlocked++;
			}
			if (threadInfo.getThreadState() == Thread.State.WAITING) {
				nThreadWaiting++;
			}
		}
		result.append(String.format("活躍線程數 %s, 阻塞線程數 %s, 等待線程數 %s", nThreadRun, nThreadBlocked, nThreadWaiting)).append(newLine);

	} catch (Exception e) {
		LoggerUtils.error("", e);
	}

	return result.toString();
}
 
開發者ID:kingston-csj,項目名稱:jforgame,代碼行數:56,代碼來源:GameMonitor.java

示例8: doThreadUpdates

import java.lang.management.ThreadMXBean; //導入方法依賴的package包/類
private void doThreadUpdates() {
    ThreadMXBean threadMXBean =
            ManagementFactory.getThreadMXBean();
    long threadIds[] = 
            threadMXBean.getAllThreadIds();
    ThreadInfo[] threadInfos =
            threadMXBean.getThreadInfo(threadIds, 0);
    
    int threadsNew = 0;
    int threadsRunnable = 0;
    int threadsBlocked = 0;
    int threadsWaiting = 0;
    int threadsTimedWaiting = 0;
    int threadsTerminated = 0;
    
    for (ThreadInfo threadInfo : threadInfos) {
        // threadInfo is null if the thread is not alive or doesn't exist
        if (threadInfo == null) continue;
        Thread.State state = threadInfo.getThreadState();
        if (state == NEW) {
            threadsNew++;
        } 
        else if (state == RUNNABLE) {
            threadsRunnable++;
        }
        else if (state == BLOCKED) {
            threadsBlocked++;
        }
        else if (state == WAITING) {
            threadsWaiting++;
        } 
        else if (state == TIMED_WAITING) {
            threadsTimedWaiting++;
        }
        else if (state == TERMINATED) {
            threadsTerminated++;
        }
    }
    metrics.setMetric("threadsNew", threadsNew);
    metrics.setMetric("threadsRunnable", threadsRunnable);
    metrics.setMetric("threadsBlocked", threadsBlocked);
    metrics.setMetric("threadsWaiting", threadsWaiting);
    metrics.setMetric("threadsTimedWaiting", threadsTimedWaiting);
    metrics.setMetric("threadsTerminated", threadsTerminated);
}
 
開發者ID:nucypher,項目名稱:hadoop-oss,代碼行數:46,代碼來源:JvmMetrics.java


注:本文中的java.lang.management.ThreadMXBean.getAllThreadIds方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。