## **線程創建方式**
* 繼承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();
...
}
```