## **线程创建方式**
* 继承Thread类
* 实现Runnable接口
* 匿名内部类
## **线程运行状态**
```
Thread t = new Thread(r);
```
| 状态 | 描述 |
| --- | --- |
| 新建 | 创建线程对象 new Thread(r) |
| 就绪 | 调用t.start()方法,等待cpu执行 |
| 运行 | 获得cpu,执行t.run()方法 |
| 阻塞 | 调用sleep方法、I/O阻塞、获取锁等 |
| 死亡 | t.run()方法执行完毕或者异常终止 |
## **守护线程**
* 用户线程:用户自定义创建的线程,主线程停止,用户线程不会停止。
* 守护线程:主线程停止或者进程不存在,守护线程也会停止。
* setDaemon(true)可设置线程为守护线程。
## **其它**
join方法:主线程当中执行到t.join()方法时,执行权让给t线程 ,t线程执行完毕后,主线程才能执行
```
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
...
}
});
t.start();
t.join();
...
}
```