java start()和run()的區別
1、概念區別
start():產生線程對象后,調用start()方法啟動線程,線程處于運行狀態RUNNABLE中的Ready就緒狀態中,此時線程等待被CPU調度,調度后再執行run()方法,使用start()方法啟動線程,真正實現了多線程。
run():run()方法是Thread中一個普通方法,直接用線程對象調用run()方法,會運行在主線程中。因為程序中只有一個主線程,當程序中有兩個線程時,直接調用run()方法,程序按照順序執行,沒有實現多線程。
2、實例
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
},"unstoppbale_t");
t1.start();
}
java中并發和并行的概念
由于任務數量遠遠超過CPU核心數量,因此操作系統會自動把任務調度到每個核心上執行。
1、概念
并發:多個進程在一個CPU下采用時間片輪轉方式,在一段時間內,讓多個進程得以推進,類似“雨露均沾”思想,一個CPU在短時間內會自動調度不同任務。
并行:多個任務在多個CPU分別同時運行,這稱之為并行。
2、區分
操作系統中將并發性與并行性做明顯區分,主要從微觀角度而言:
并發性:單處理機情況下,多個進程在同一時間間隔運行
并行性:多處理機情況下,多個進程同時運行
舉個例子理解并發與并行機制:
客戶去銀行辦理業務
并發性:為了讓銀行服務人員更好地服務客戶,規定每個客戶的業務辦理時間(防止其他客戶長時間等待),銀行服務人員將時間片輪轉思想應用到客戶業務中,當該客戶業務的辦理時間到達規定時間,銀行人員暫停當前業務隨之去辦理下一個客戶的業務,該客戶等待下一次時間片的到來。從長時間來看,因為時間片較短,一個銀行服務人員被認為可同時服務多個客戶,這就可以理解為基于時間片的進程輪轉管理機制,就是所謂的并發性。
并行性:銀行如果非常有錢,雇傭了很多的工作人員,此時一個客戶就會有一個工作人員對接,所有客戶的業務真正實現了同時處理,這種機制就稱為并行性。
以上就是java中并發和并行的概念介紹,希望對大家有所幫助。更多關于“java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。