[TOC]
## 線程
- 線程創建
創建一個線程類,需要繼承`Thread`類或者實現`Runnable`接口,重寫`run`方法
- 開啟線程
開啟一個線程需要執行`start()`方法
接口開啟線程需要調用`Thread(Object <implement Runnable>)`構造方法創建 `Thread `對象.并使用該對象調用`start()`方法
>### 線程操作
- Objec里的方法
```
wait() : 放棄當前線程執行權,釋放鎖,進入等待隊列
notify() : 喚醒一個等待線程。
join() : 當調用join 方法的時候,當前線程會放棄執行權,直到join線程執行完畢。
yield();放棄當前執行權,重新競爭cpu執行權;
線程優先級默認值為5;
setPriority():設置線程優先級 1 - 10 ;
```
>### Thread
- 方法:
```
sleep(int time) : 線程多少秒執行一次.
currentThread():獲得當前線程
```
>### 線程安全
當多個線程操作共享屬性的時候,此時有可能產生線程安全問題。
- 線程機制
每一個線程都有自己的線程棧,當需要棧操作共享數據時,線程棧會拷貝一份堆中的副本,在棧中操作完副本之后,再將這個新值,同步給堆。
>解決方案
同步代碼塊,又叫對象鎖。
- 語法格式
```
synchronized(任意一個對象,都可以當鎖){
包裹課程產生線程安全的代碼
}
```
- 注意
```
使用同步代碼塊的時候,對于鎖對象的要求,要求多個線程要使用同一個對象。
```
>### 線程池
*線程池,是一個容納多個線程的容器。*
- 線程池的創建
```
Executors.newFixedThreadPool(線程數);
```
- 向線程池提交執行任務
```
submit() :
```
```
實現Runnable接口
實現Callable接口
```
- 關閉線程池
```
shutdown()
```
>### 同步方法
*使用synchronized修飾方法。*
```
1.非靜態方法鎖對象默認為this;
2.靜態方法鎖對象默認為當前字節碼文件,類名.class
```
>### 線程狀態
* 新建狀態
* 可運行狀態
* 阻塞/等待狀態
* 運行狀態
* 死亡狀態
- 第一章 java SE
- 1.1數據類型
- 1.2 流程控制語句
- 1.3 方法
- 1.4 面向對象三特性
- 1.5 對象數組與集合
- 1.6 數組和集合操作工具類
- 1.7 可變參數
- 1.8 String
- 1.9 StringBuilder
- 1.10 final&&finally&&finalize
- 1.11 抽象類與接口
- 1.12 基本數據類型的包裝類
- 1.13 泛型
- 1.14 內部類
- 1.15 throw & throws & try catch
- 1.16 線程
- 1.17 BeanUtils
- 1.18 java反射
- 1.19 序列化和反序列化
- 1.20 IO輸入輸出流
- 1.21 File
- 1.22 RandomAccessFile
- 1.23 第三方工具CommonsIO
- 1.24 java網絡傳輸
- 第二章 java EE
- 2.1 maven的配置
- 2.2 Cookie
- 2.3 EL表達式 JSTL
- 2.4 驗證相關
- 2.4.1 驗證碼
- 2.5 防重復提交
- 2.6 activeMq的使用
- 2.7 jtl的使用
- 2.8 Upload上傳文件
- 第三章 Spring相關
- 3.1 IOC/DI
- bean的生命周期
- bean的配置
- 3.2 Spring Aop
- 3.3 Spring Jdbc
- 3.4 事物相關
- 事物
- 事物的使用
- 3.5 MBG使用
- 第四章 解決問題方法
- 4.1 List轉換為Map
- 4.2 結果返回類
- 4.3 HSSF的使用
- 第五章 排序
- 5.1 冒泡排序
- 5.2 選擇排序
- 5.3 快速排序