如果是單核CPU,在某個(gè)時(shí)間點(diǎn)只能執(zhí)行一個(gè)線程,但是多核CPU你可以理解為多個(gè)單核CPU,當(dāng)然可以同時(shí)執(zhí)行多個(gè)線程啦。
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),長安網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:長安等地區(qū)。長安做網(wǎng)站價(jià)格咨詢:18982081108
多CPU當(dāng)然是真多線程。就是CPU可能同時(shí)在執(zhí)行4個(gè)線程。但是不是多核也沒關(guān)系。因?yàn)榫€程的執(zhí)行往往會(huì)掛起,等待IO之類。這時(shí)候CPU會(huì)轉(zhuǎn)到別的線程來執(zhí)行。這是分時(shí)系統(tǒng)的一大特征。當(dāng)然人是感覺不到的。
多線程:指的是這個(gè)程序(一個(gè)進(jìn)程)運(yùn)行時(shí)產(chǎn)生了不止一個(gè)線程 并行與并發(fā):并行:多個(gè)cpu實(shí)例或者多臺(tái)機(jī)器同時(shí)執(zhí)行一段處理邏輯,是真正的同時(shí)。
java中的線程跟操作系統(tǒng)的是不一樣的,因?yàn)閖ava使用了虛擬機(jī)。一個(gè)CPU一個(gè)時(shí)刻只能運(yùn)行一個(gè)線程。多CPU的話,也許能讓多個(gè)線程在各個(gè)CPU上同時(shí)跑,這要看線程能不能同時(shí)運(yùn)行,有沒有搶占資源之類的。
并發(fā)與并行是兩個(gè)既相似而又不相同的概念:并發(fā)性,又稱共行性,是指能處理多個(gè)同時(shí)性活動(dòng)的能力;并行是指同時(shí)發(fā)生的兩個(gè)并發(fā)事件,具有并發(fā)的含義,而并發(fā)則不一定并行,也亦是說并發(fā)事件之間不一定要同一時(shí)刻發(fā)生。
解釋一:并行是指兩個(gè)或者多個(gè)事件在同一時(shí)刻發(fā)生;而并發(fā)是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔發(fā)生。解釋二:并行是在不同實(shí)體上的多個(gè)事件,并發(fā)是在同一實(shí)體上的多個(gè)事件。
并行是指兩個(gè)或者多個(gè)事件在同一時(shí)刻發(fā)生;而并發(fā)是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔發(fā)生。并行是在不同實(shí)體上的多個(gè)事件,并發(fā)是在同一實(shí)體上的多個(gè)事件。
1、善用“無鎖”阻塞線程會(huì)帶來性能開銷,因此,一種提供性能的方案就是使用無鎖的CAS操作。JDK中的原子類,如AtomicInteger正是使用了這種方案。在高并發(fā)環(huán)境中,沖突較多的情況下,性能遠(yuǎn)遠(yuǎn)好于傳統(tǒng)的鎖操作。
2、必要之前不要優(yōu)化 這可能是最重要的性能調(diào)整之一。您將要根據(jù)一般的最佳實(shí)踐來高效地實(shí)施用例。但是,這并不意味著在需要之前,必須更換標(biāo)準(zhǔn)庫或進(jìn)行復(fù)雜的優(yōu)化。
3、其次是可以使用分析器進(jìn)行優(yōu)化,分析器能夠獲取代碼中每個(gè)部分的性能詳細(xì)信息。為應(yīng)用程序創(chuàng)建測(cè)試套件 這個(gè)一種能夠幫助你避免很多問題的方法,很多問題主要是發(fā)生在性能部署在生產(chǎn)環(huán)境之后。
4、養(yǎng)成好的代碼編寫習(xí)慣非常重要,比如正確地、巧妙地運(yùn)用java.lang.String類和java.util.Vector類,它能夠顯著地提高程序的性能。下面我們就來具體地分析一下這方面的問題。 盡量指定類的final修飾符帶有final修飾符的類是不可派生的。
5、如果指定了一個(gè)類為final,則該類所有的方法都是final的。Java編譯器會(huì)尋找機(jī)會(huì)內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對(duì)于提升Java運(yùn)行效率作用重大,具體參見Java運(yùn)行期優(yōu)化。此舉能夠使性能平均提高50%。