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