一、多線程介紹
在介紹多線程之前我們有必要先了解一下進程這個概念,何爲進程?
進程:正在執行的程序就可以認爲佔用了一個進程。
線程:線程是進程中的一個執行單元,負責當前進程中程序的執行,一個進程中至少有一個線程。一個進程中是可以有多個線程的,這個應用程序也可以稱之爲多線程程序
1.1 進程和線程的區別
1. 線程是程序執行的最小單位,而進程是操作系統分配資源的最小單位
2. 一個進程由一個或多個線程組成,線程是一個進程中代碼的不同執行路線
3. 進程之間相互獨立,但同一進程下的各個線程之間共享程序的內存空間(包括代碼段,數據集,堆等)及一些進程級的資源(如打開文件和信號等),某進程內的線程在其他進程不可見
4. 調度和切換:線程上下文切換比進程上下文切換要快得多
1.2 線程的生命週期
一個線程從出生到死亡,可能涉及到6個狀態
1.New:線程新建但是並未啓動的狀態
2.Runnable:可運行的狀態,等待cpu調度
3.Blocked:線程處於阻塞狀態
4.Waiting:線程等待狀態
5.Timed Waiting:線程處理具有等待時間的等待狀態
6.Terminated:終止線程後的線程狀態。(線程正常執行完畢或者出現異常時候的狀態)
二、多線程解決什麼了問題
多線程的引入,可以充分的利用CPU資源
三、多線程用在什麼場景
1.比如有個後臺任務是發郵件,需要給10w用戶發送郵件,可以啓動多個線程來執行
四、創建一個線程
Java 提供了三種創建線程的方法:
- 通過實現 Runnable 接口;
- 通過繼承 Thread 類本身;
- 通過 Callable 和 Future 創建線程。