多執行緒指在單個程式中可以同時執行多個不同的執行緒執行不同的任務。
多執行緒程式設計的目的,就是「最大限度地利用
cpu資源
」,當某一線程的處理不需要占用
cpu而只和
io等資源打交道時,讓需要占用
cpu的其他執行緒有機會獲得
cpu資源。從根本上說,這就是多執行緒程式設計的最終目的。
乙個程式實現多個**同時交替執行就需要產生多個執行緒。
cpu隨機地抽出時間,讓我們的程式一會做這件事情,一會做另外的事情。
從巨集觀角度來看,多個執行緒在同時執行(巨集觀並行),但是微觀上來看,處理器的個數決定了某乙個時刻可以同時執行的最大執行緒數,
如單核cpu某一時刻只能有乙個執行緒在執行(微觀序列),雙核的
cpu在某乙個時刻,最多可以執行兩個執行緒,可以做到微觀並行。
1.
繼承thread
類並重寫它的
run方法。之後建立這個子類的物件並呼叫start()方法。
2.
通過定義實現
runnable
介面的類進而實現
run方法。這個類的物件在建立thread的時候作為引數被傳入,然後呼叫
start()
方法。
thread
類是專門用來建立執行緒和對執行緒進行操作的類。當某個類繼承了thread類之後,該類就叫做乙個執行緒類。
兩種方法均需執行執行緒的start()方法為執行緒分配必須的系統資源、排程執行緒執行並執行執行緒的run()方法。
注意:start()方法是啟動執行緒的唯一的方法。
start()
方法首先為執行緒的執行準備好系統資源,然後再去呼叫
run()
方法。
run()方法中放入了執行緒的工作,即我們要這個執行緒去做的所有事情。預設狀況下
run()
方法什麼也不做。
1. 通過繼承thread類實現多執行緒
* 通過thread實現執行緒
thread thread1 = new thread() catch (interruptedexception e)
catch
(interruptedexception e)
system.
out.println(
"thread2:"
+ thread.currentthread().getname()); }
}});
thread2.start();
thread類也實現了runnable介面,因此實現了介面中的run()方法。
當生成乙個執行緒物件時,如果沒有為其指定名字,那麼執行緒物件的名字將使用如下形式:thread-number,該number是自動增加的數字,並被所有的thread物件所共享,因為它是乙個static的成員變數。
當使用第一種方式(繼承thread的方式)來生成執行緒物件時,我們需要重寫run()方法,因為thread類的run()方法此時什麼事情也不做。
當使用第二種方式(實現runnable介面的方式)來生成執行緒物件時,我們需要實現runnable介面的run()方法
執行緒的消亡不能通過呼叫stop()命令,而是讓run()方法自然結束。stop()方法是不安全的,已經廢棄。
停止執行緒推薦的方式:設定乙個標誌變數,在run()方法中是乙個迴圈,由該標誌變數控制迴圈是繼續執行還是跳出;迴圈跳出,則執行緒結束。
多執行緒 執行緒簡介
1.什麼是執行緒?什麼是程序?執行緒 thread 執行緒是作業系統所能執行排程的最小單位。他被包含在程序之中,是程序的實際運作單位,也就是程式執行流的最小單位。乙個標準的執行緒由 執行緒id pc 當前指令指標 暫存器集合 堆疊組成。也被稱為輕量級的程序。乙個執行緒可以建立和撤銷另乙個執行緒,同乙...
多執行緒簡介
多執行緒是c 中常用的一種技術,可以充分利用多核cpu的計算潛能 以下以相關概念介紹多執行緒的使用 執行緒 thread 與程序 process 均為音譯詞,程序本質上就是廣義上理解的程式,而程序則是乙個程式內部的一種平行計算方法 最常見的,在ros中,node與node之間的關係,就是程序 而在乙...
多執行緒簡介
什麼是執行緒?執行緒是乙個過程,一次可以做的任務的過程。多執行緒就是一次可以做幾個任務的過程。打個比方 乙個房間正在被乙個工人刷牆,這就是單執行緒。這時,另乙個工人進入了房間,那麼就變成了兩個人在刷牆,這就是多執行緒。在計算機中指令的執行由cpu排程,因為電腦只有一塊cpu,所以本質上是乙個執行緒的...