# 多線程
>[success]多線程編程是Java語言最為重要的特性之一,利用多線程技術可以提升單位時間內的程序處理性能,也是現代程序開發中高并發的主要涉及形式。
使用多線程只有一個目的,那就是**更好的利用cpu的資源**。
通俗的講,就是使用多線程可以同時多個任務
## 并行和并發
* 并行:多個CPU實例或是多臺機器同時執行一段處理邏輯,是真正的同時。
* 并發:通過CUP調度算法,讓用戶看上去同時去執行,實際上從CPU操作層面并不是真正的同時。并發往往需要公共的資源,對公共資源的處理和線程之間的協調是并發的難點。
## 進程和線程
* 進程是指可執行程序并存放在計算機存儲器的一個指令序列,他是一個程序的動態執行的過程,經歷了從代碼加載,執行到執行完成的一個完整過程。
* 線程是指進程中的一個執行流程,一個進程中可以運行多個線程,一個線程是一個子進程。
>[info] 案例:
> 日常使用電腦,一邊寫代碼一遍聽歌,有時候還會去打開微信回復一下朋友的信息
> 這樣一個場景,我們使用了三個軟件,音樂播放器,代碼編輯器和微信。這三個軟件同時工作,就是我們的進程在起作用。
早期的操作系統,是單任務操作系統,也就是只有一個程序運行結束后,才能進行下一個程序的執行。而現在的操作系統則多任務操作系統,可以同時運行多個程序。
>[success] 線程相等于子程序,代碼可以分成多個代碼塊,放在多個線程中去執行
>[info] 案例:
> 我們使用Eclipse編寫代碼的時候,Eclipse會在我們代碼錯誤的地方給出紅色浪線。每次啟動Eclipse對于操作系統而言就是啟動了一個系統的進程,而在這個進程上又有其他的子程序(線程)——代碼檢查。
> 如果關閉Eclipse,代碼檢查的線程肯定也會關閉,但是如果代碼檢查的線程消失了,卻不一定會讓Eclipse的進程消失
## 時間片機制
多任務操作系統同時運行多個進程(程序),是因為CPU具備分時機制,所以每個進程都能循環獲得自己的CPU時間片,由于CPU執行速度非常快,使得所有程序好像是在同時運行一樣。
實際上,通俗的理解就是CPU每隔一段時間(這個時間非常短且不一定固定),會將當前進程切換到其他進程,使這些進程輪番穿插運行。
因為這個時間非常短,所以我們會認為這些程序是同時進行的。
## 主要學習內容
* 線程的創建
* 線程的狀態和生命周期
* 線程調度
* 同步和死鎖
- Java業余班教學管理
- JAVA基礎
- JAVA開發學習準備
- JAVA介紹
- 開發JAVA的準備
- JAVA的運行原理
- JDK配置
- 我的第一個JAVA程序
- 類與對象
- 基礎語言要素
- 數據類型
- Eclipse的安裝與使用
- 變量
- 直接量
- 運算符
- 流程控制
- 數組結構
- 面向對象
- 隱藏與封裝
- 深入構造器
- 類的繼承
- 多態
- 包裝類
- final修飾符
- 抽象類
- 接口
- 設計模式
- 單例模式
- 工廠模式
- 集合框架
- 集合排序
- 常用類學習
- 異常處理
- Java基礎綜合練習
- JAVA高級
- 泛型
- 多線程
- 線程的創建
- 線程的生命周期
- 線程同步
- 線程通信
- 輸入輸出流(I/O編程)
- File文件操作
- 字節流與字符流
- 數據庫
- 數據庫介紹
- 數據庫安裝
- SQL
- 表的基本操作
- 修改數據語句
- 數據檢索操作
- 多表數據操作
- 表結構設計
- 綜合應用
- JavaWeb