8.1 線程簡介 1 、多任務 現實生活中多件事一起作。 在程式中是指在一個系統中可以同時進行多個進程,即有多個單獨運行的任務,每一個任務對應一個進程。 每一個進程都有一段專用的記憶體區域,即使是多次啟動同一段程式產生不同的進程也是如此。 2、多線程 Java 給多線程編程提供了內置的支持。 一條線程 ...
8.1 線程簡介
1 、多任務
-
現實生活中多件事一起作。
-
在程式中是指在一個系統中可以同時進行多個進程,即有多個單獨運行的任務,每一個任務對應一個進程。
-
每一個進程都有一段專用的記憶體區域,即使是多次啟動同一段程式產生不同的進程也是如此。
2、多線程
-
Java 給多線程編程提供了內置的支持。 一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。
-
多線程是多任務的一種特別的形式,但多線程使用了更小的資源開銷。
-
多線程能滿足程式員編寫高效率的程式來達到充分利用 CPU 的目的。
-
主線程和子線程交替執行
3、程式、進程、線程
-
程式
-
程式是指令和數據的有序集合,其本身沒有任何運行的含義,是一個靜態的概念。
-
-
進程
-
一個應用程式(1個進程是一個軟體)
-
是執行程式的一次執行過程,是一個流動的概念。是系統資源分配的單位。
-
一個進程包括由操作系統分配的記憶體空間,包含一個或多個線程。一個進程一直運行,直到所有的非守護線程都結束運行後才能結束。
-
-
線程
-
一個進程中的執行場景/執行單元。
-
線程是CPU調度和執行的單位。
-
一個線程不能獨立的存在,它必須是進程的一部分。
-
-
註意:
-
一個進程可以有多個線程
-
線程是獨立的執行路徑。
-
在程式與運行時,即使沒有自己創建線程,後臺也會有多個線程,如主線程,gc線程
-
main()稱為主線程,為系統的入口,用於執行整個程式;
-
在一個進程中,如果開闢了多個進程,線程的運行由調度器安排調度,調度器是與操作系統緊密相關的,先後順序是不能認為的干預的。
-
對於同一份資源操作,會存在資源搶奪的問題,需要加入併發控制。
-
線程會帶來額外的開銷,CPU的調度時間、併發控制開銷。
-
每一個線程在自己的工作記憶體交互,記憶體控制不當會造成數據不一致。
-
8.2 線程創建
-
三種創建方式:
-
Thread class 繼承Thread類
-
Runnable介面 實現Runnable介面
-
Callable介面 實現Callable介面
-
8.2.1 Thread類
-
創建一個新的執行線程的方法,將一個聲明為Thread的子類。
-
自定義線程類繼承Thread類
-
重寫run()方法,編寫線程執行體
-
創建線程對象,調用start()方法啟動線程。
-
註意:
-
線程開啟不一定立即執行,由CPU調度執行
-
啟動線程:子類對象.start()
-
不建議使用,為了避免OOP單繼承的局限性
-
-
實例
package Demo032;
/**
* @Author: H-YONG-8
* @DATA: 2023/4/20
* JavaSE
* 創建多線程 繼承Thread類
*/
public class TestThread1 extends Thread{