线程有以下的状态:
- New:新创建的线程,尚未执行;
- Runnable:运行中的线程,正在执行run()方法的Java代码;
- Blocked:运行中的线程,因为某些操作被阻塞而挂起;
- Waiting:运行中的线程,因为某些操作在等待中;
- Timed Waiting:运行中的线程,因为执行sleep()方法正在计时等待;
- Terminated:线程已终止,因为run()方法执行完毕。
线程终止的原因有三种:
- 正常终止:run()方法执行完毕
- 意外终止:run()方法执行捕获异常,被迫终止。
- 强制终止:对该线程实例调用stop()方法。(不推荐)
Thread.join():
该方法可以使一个进程等待另一个进程结束之后再执行。
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(() -> {
System.out.println("hello");
});
System.out.println("start");
t.start();
t.join();
System.out.println("end");
}
}
start
hello
end
上例中,main主线程对t调用join方法,使main主线程停止等待t线程结束之后再执行。