一、线程的几种状态
- NEW:新创建的线程,还未运行
- RUNABLE:正在运行
- BLOCKED:受阻塞并等待某个监视器锁
- WAITING:无限的等待,知道其他线程执行了某个操作(wait()方法)
- TIME_WAITING:等待指定时间后执行线程
- TERMINATED:线程已经退出,结束运行
二、线程组
- 可以把线程归属到某一个线程组中。ThreadGroup group = new ThreadGroup(“groupA”); Thread t = new Thread(group,“A”);
- 线程组内可以有线程组,可以组成子孙关系
- 如果不指定,线程会归到当前线程组中
- group.interrupt() 执行后,线程组里面的所有线程里的 isInterrupted() 都会变成true
三、线程安全
- 可以使用thread.setUncaughtExceptionHandler() 来给指定线程设置异常处理器。也可以对所有线程设置异常处理器
ThreadGroup group = new ThreadGroup("groupA");
Thread t = new Thread(group, "A");
t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("线程" + t.getName() + "出现了异常。");
}
});