java多线程之路之线程属性—Core Java学习

来源:互联网 发布:河南知春商贸有限公司 编辑:程序博客网 时间:2024/05/29 03:39

线程优先级:

每个线程有一个优先级。默认情况下,一个线程继承他的父线程的优先级。

方法 setPriority(): 设置线程的优先级。MIN_PRIORITY = 1;NORM_PRIORITY = 5; MAX_PRIORITY = 10;

不要将程序功能的正确性依赖于优先级,线程的优先级高度依赖于系统。

守护线程:

为其他线程提供服务。

方法 setDaemon(true):将一个线程标识为守护线程。这一方法必须在线程启动之前被调用。

线程的未捕获异常处理器:

如果线程发生异常而意外终止,该线程中又没有显示的进行捕获(catch),如果为该线程定了义UncaughtExceptionHandler,则异常会被传递到该处理器中进行处理。自定义异常处理器必须实现UncaughtExceptionHandler 借口。下面为大家演示一下。

首先定义一个类,实现UncaughtExceptionHandler。

public class UncaughtExceptionHandlerImpl implements UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
// TODO Auto-generated method stub
System.out.println(t.getName());
e.printStackTrace();
}
}

创建线程,并为该线程设置UncaughtExceptionHandler。

public class ThreadRun extends Thread {
@Override
public void run() {
this.setUncaughtExceptionHandler(new UncaughtExceptionHandlerImpl());
this.setName("run thread");  //设置线程的名称
super.run();
throw new NumberFormatException();
}
}

进行测试

public class Test {
@org.junit.Test
public void testUncaughtExceptionHandler(){
ThreadRun run = new ThreadRun();
run.start();
}
}

输出结果


相关方法:static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh) : 为所有线程设置默认的UncaughtExceptionHandler 

static UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();获得所有线程的默认的UncaughtExceptionHandler;

void setUncaughtExceptionHandler(UncaughtExceptionHandler eh) : 为单个线程设置UncaughtExceptionHandler 















0 0
原创粉丝点击