1、线程属性
子线程会继承父线程的属性
(1)线程ID,主要是Jvm使用的,是从1(主线程)开始递增的用于标记每一个线程。
(2)守护线程和用户线程:当所有的用户线程运行结束时,JVM会退出,程序运行结束。守护线程不影响JVM的退出。
(3)java线程的优先级有10个级别,默认是5,JVM会把java的优先级映射到 *** 作系统中,不同 *** 作系统的优先级数目不同,且优先级会被 *** 作系统改变,因此程序设计不依赖于优先级。
2、线程未捕获异常处理
(1)异常体系
a、Error:程序运行时系统的内部错误或资源耗尽
b、Exception:分为两大类:运行时异常和其他异常,运行时错误表示代码有问题导致程序的错误。将RunTimeException和Error统称为非受检查异常,其他为受检查异常,编译器要求必须对受检查异常进行处理或向外抛,而不会检查Error和RunTimeException。
(2)主线程中的try catch只能捕获主线程中的异常,无法捕获子线程中的异常
(3)UncaughtExceptionHandler源码
(4)利用uncaughtExceptionHaddler实现统一异常处理
自定义全局的异常处理器:实现Thread.UncaughtExceptionHandler接口
将自定义的未捕捉异常处理器异常设置为全局的异常处理器:
Thread.setDefaultUncaughtExceptionHandler();
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)