线程状态
1.新建线程
new Thread();
2.可运行线程
一旦调用start()方法,线程就处于可运行状态。
3.阻塞和等待线程
阻塞:当一个线程尝试获取一个内部的对象锁,而这个锁被其他线程占有,该线程就处于阻塞状态。
等待:当线程等待另一个线程通知调度器出现一个条件时,这个线程就会处于等待状态。调用Object.wait或Thread.join方法,或者等待java.util.concurrent库中的lock或Condition时,就会出现这种情况。
计时等待:有几个参数有超时参数,调用这些方法会进入计时等待状态。带有超时参数的方法有Thread.sleep和计时版本的Object.wait、Thread.join、Lock.tryLock以及Condition.await.
4.终止线程
线程终止有以下两个原因
1:run方法正常退出,程序自然终止。
2:因为一个没有捕获的异常终止了线程。
调用线程的stop方法杀死线程,已废弃