java多线程编程一之java线程的原理
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
????我們現(xiàn)在使用的操作系統(tǒng)都是多任務(wù)操作系統(tǒng),每個(gè)運(yùn)行的任務(wù)就是操作系統(tǒng)所做的一件事情,比如我們?cè)诤蛣e人聊QQ時(shí)還可以一邊聽(tīng)著歌,一般來(lái)說(shuō)一個(gè)任務(wù)對(duì)應(yīng)著一個(gè)進(jìn)程,也有可能包含多個(gè)進(jìn)程。
????線程是進(jìn)程中的實(shí)體,一個(gè)進(jìn)程可以擁有多個(gè)線程,一個(gè)線程必須有一個(gè)父進(jìn)程。線程不擁有系統(tǒng)資源,只有運(yùn)行必須的一些數(shù)據(jù)結(jié)構(gòu);它與父進(jìn)程的其它線程共享該進(jìn)程所擁有的全部資源。進(jìn)程可以創(chuàng)建和撤消線程,從而實(shí)現(xiàn)程序的并發(fā)執(zhí)行。一般,線程具有就緒、阻塞和運(yùn)行三種基本狀態(tài)。多線程的目的是為了最大限度的利用CPU資源。
? ? ? ?同一進(jìn)程的里多個(gè)子線程看似可以同步進(jìn)行,其實(shí)不是同步的(由于CPU在同一時(shí)間內(nèi)只能處理一個(gè)線程),他們可以訪問(wèn)父線程的資源與對(duì)象,這樣一來(lái)的優(yōu)點(diǎn)是可以實(shí)現(xiàn)子線程與子線程之間的通信并且可以節(jié)省內(nèi)存空間,不必為每個(gè)子線程重新分配內(nèi)存空間。但缺點(diǎn)是容易使得數(shù)據(jù)混亂,線程不安全。
java線程的創(chuàng)建與啟動(dòng)
一、線程創(chuàng)建的方法
1、擴(kuò)展java.lang.Thread類(lèi)。
2、實(shí)現(xiàn)java.lang.Runnable接口。
二、啟動(dòng)進(jìn)程
調(diào)用start()方法。
在調(diào)用start()方法之前:線程處于新?tīng)顟B(tài)中,新?tīng)顟B(tài)指有一個(gè)Thread對(duì)象,但還沒(méi)有一個(gè)真正的線程。
?
在調(diào)用start()方法之后:
啟動(dòng)新的執(zhí)行線程(具有新的調(diào)用棧);
該線程從新?tīng)顟B(tài)轉(zhuǎn)移到可運(yùn)行狀態(tài);
當(dāng)該線程獲得機(jī)會(huì)執(zhí)行時(shí),其目標(biāo)run()方法將運(yùn)行。
????
轉(zhuǎn)載于:https://my.oschina.net/u/1466944/blog/207260
總結(jié)
以上是生活随笔為你收集整理的java多线程编程一之java线程的原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 雷霆战机烈阳勋章哪里打
- 下一篇: 《EDIUS 6.5快刀手高效剪辑技法》