`
arne3166
  • 浏览: 132898 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

线程的各种异常信息

阅读更多
import java.io.*;

public class ThreadInfo {
	static PrintWriter out = new PrintWriter(System.out, true);
	public static void main(String[] args) {
		Thread[] threads = new Thread[4];
		ThreadGroup group = new ThreadGroup ("MyThreadGroup");
		if(args.length > 0) {
			Thread thread = Thread.currentThread();
			thread.setName(args[0]);	
		}
		for(int i = 0; i< 4; i++) {
			threads[i] = new Thread(group,"MyThread#" + i);
		}
		ThreadInfo.printAllThreadInfo();
	}
	public static void printAllThreadInfo() {
		ThreadGroup parent,root;
		root = parent = Thread.currentThread().getThreadGroup();
		while((parent = parent.getParent()) != null) {
			root = parent;
		}
		out.println();
		printThreadGroupInfo(" ",root);
	}
	public static void printThreadGroupInfo (String indent, ThreadGroup group) {
		final int SAFETY = 5;
		if(group == null) {
			return ;
		}
		out.println(indent + "ThreadGroupt" + group.getName() + "; Max Priority: " +
			  group.getMaxPriority() + (group.isDaemon() ? " [Daemon] " : ""));
		int numThreads = group.activeCount();
		Thread[] threads = new Thread[numThreads + SAFETY];
		numThreads = group.enumerate(threads,false);
		for(int i = 0; i< numThreads; i++) {
			printThreadInfo(indent + " ", threads[i]);
		}
		int numGroups = group.activeGroupCount();
		ThreadGroup[] groups = new ThreadGroup[numGroups + SAFETY];
		numGroups = group.enumerate(groups, false);
		for(int i = 0; i< numGroups; i++) {
			printThreadGroupInfo(indent + "  ", groups[i]);
		}
	}
	public static void printThreadInfo (String indent, Thread thread) {
		if(thread == null) {
			return ;
		}
		out.println(indent + "Thread:" + thread.getName() + "; Priority :"
			  + thread.getPriority() + (thread.isDaemon()? "[Daemon]":" ") 
			  + (thread.isAlive()? "[Alive] " :"[NotAlive]") 
			  + ((Thread.currentThread() == thread) ? " <==current " : "" ));
	}
}

 

分享到:
评论

相关推荐

    delphi线程异常处理

    在Delphi编程环境中,线程(Thread)是并发执行任务的...正确处理线程异常能提高程序的稳定性和健壮性,同时减少用户遇到的问题,提升用户体验。理解并熟练应用这些概念对于开发高质量的多线程Delphi应用程序至关重要。

    易语言线程结构异常处理

    通过理解并熟练运用这些知识点,开发者可以创建更加健壮和稳定的易语言程序,有效地处理线程异常,提高程序的容错性和可靠性。同时,深入理解线程管理、异常处理和底层内存操作也是提升编程技能的重要步骤。

    java 多线程异常处理

    Java多线程异常处理是Java编程中不可或缺的一部分,特别是在并发编程场景下,正确处理异常能够保证程序的稳定性和健壮性。本实验报告主要涵盖了Java异常处理机制、多线程概念与实现,以及多线程同步问题。 首先,...

    向指定线程插入异常,以便控制线程行为

    标题中的“向指定线程插入异常,以便控制线程行为”是一种高级的线程控制技术,主要用于在运行时改变线程的行为。以下是对这个技术的详细解释: 线程控制是多线程编程中的一个重要概念,通常线程一旦启动,就会独立...

    线程监控工具,查找异常线程

    3. **分析堆栈**:查看异常线程的堆栈信息,找出导致问题的关键代码行。 4. **定位原因**:分析代码,了解为何会出现这种状态,可能是资源竞争、死锁、无限循环等问题。 5. **解决问题**:修复代码,优化线程管理,...

    UI界面多线程简单实现和线程捕获异常问题

    // 记录或显示异常信息,然后关闭程序 }; ``` 在实际开发中,为了更好地管理和控制线程,可以使用ThreadPool或者异步编程模型(如`async/await`关键字),它们提供了更好的性能和资源利用率。同时,对于可能出现长...

    易语言线程结构异常处理.7z

    易语言是一种以中文编程为...5. 记录和分析线程异常,以便优化代码和改进程序设计。 通过学习和实践这些知识点,开发者可以在易语言环境中更有效地管理和处理线程结构异常,从而编写出更加稳定、可靠的多线程程序。

    线程笔记(多线程,异常)

    线程是并发编程中的基本单位,它允许程序在同一时间处理多个任务。在.NET框架中,线程的管理和同步是至关重要的。以下是对标题和描述中提到的线程相关知识点的详细解释: 1. **Interrupt方法**:在.NET中,`Thread....

    Java多线程之多线程异常捕捉

    异常信息会被直接打印到控制台,导致程序无法正常处理异常。 那么,如何在多线程环境中捕获并处理异常呢?以下是一种有效的方法: 1. **定义异常处理器**: 首先,我们需要创建一个实现了`Thread....

    子线程任务发生异常,主线程事务如何回滚

    当子线程任务发生异常时,我们可以使用 try-catch 语句来捕获异常。在本文中,我们实现了一个 ExpSubThread 类,该类实现了 Callable 接口,并在 call 方法中抛出一个空指针异常。 在主线程中,我们可以使用 Future...

    05_ExceptionAndThread_java线程和异常方法_

    在Java编程语言中,线程和异常处理是两个至关重要的概念,它们对于任何开发者来说都是必须掌握的基础知识。本文将深入探讨"05_ExceptionAndThread_java线程和异常方法_"这个主题,帮助你巩固和深化对这两个核心概念...

    多线程异常处理.pdf

    Test类尝试除以零,导致ArithmeticException异常被抛出,然后在catch块中捕获并打印异常信息。Test2类展示了如何在静态方法中抛出异常,并通过try-catch语句进行处理。 在处理多线程异常时,需要考虑线程池的使用...

    一个基于C#实现的完美解决在多线程中异常处理的程序代码

    `SafeThread`的概念主要是通过创建一个专门用于监控和处理线程异常的机制来实现。C#中可以使用`ThreadPool`、`Task`或自定义`Thread`来启动线程,但无论哪种方式,都需要确保有合适的异常处理策略。以下是几个关键...

    易语言源码易语言线程结构异常处理.rar

    易语言源码易语言线程结构异常处理.rar 易语言源码易语言线程结构异常处理.rar 易语言源码易语言线程结构异常处理.rar 易语言源码易语言线程结构异常处理.rar 易语言源码易语言线程结构异常处理.rar 易语言源码...

    一个线程捕获另外一个线程的异常1---马克-to-win java视频

    一个线程捕获另外一个线程的异常1---马克-to-win java视频

    多线程与异常处理(共71张PPT)精选.pptx

    - **异常转换**:在catch块中,可以重新抛出一个新的异常,将原始异常信息包装进新异常中。 - **异常的终结方法**:如果对象在抛出异常后需要清理资源,可以使用`finally`块或`try-with-resources`语句。 掌握多...

    多线程与异常C#简单源码

    本文将深入探讨C#中的多线程概念及其应用,以及如何处理多线程环境中的异常。 多线程允许一个应用程序同时执行多个不同的任务,这样可以充分利用多核处理器的计算能力。在C#中,我们可以使用System.Threading命名...

    java线程异常

    为了确保线程异常的正确处理,通常会在`run()`方法内部进行try-catch-finally结构,或者使用`Thread.UncaughtExceptionHandler`来设定全局的未捕获异常处理器。 测试线程池(testThreadPoolExecutor)可能涉及编写...

    线程异常SEHHook

    通过记录异常信息,可以更好地理解程序崩溃的原因。 7. **最佳实践**:合理使用SEHHook的最佳实践包括:仅在必要时安装钩子,确保钩子函数的可逆性,避免全局异常处理,以及始终提供适当的清理和资源释放机制。 ...

    Delphi多线程的安全问题分析及解决

    4. **异常处理**:为了确保线程在异常情况下的安全,可以采用异常处理机制来捕获和处理异常,避免程序因未处理的异常而崩溃。 5. **线程池(Thread Pool)**:线程池可以有效管理线程资源,减少线程创建和销毁带来的...

Global site tag (gtag.js) - Google Analytics