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