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