黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 線程的基本概念

線程的基本概念

更新時(shí)間:2021-06-23 12:52:10 來源:動力節(jié)點(diǎn) 瀏覽1384次

基本概念

多任務(wù):同一時(shí)刻運(yùn)行多個(gè)程序的能力。每一個(gè)任務(wù)稱為一個(gè)線程。可以同時(shí)運(yùn)行一個(gè)以上線程的程序稱為多線程編程

Java編寫程序都運(yùn)行在Java虛擬機(jī)(JVM)中,在JVM的內(nèi)部,程序的多任務(wù)是通過線程來實(shí)現(xiàn)的。每用java命令啟動一個(gè)java應(yīng)用程序,就會啟動一個(gè)JVM進(jìn)程。在同一個(gè)JVM進(jìn)程中,有且只有一個(gè)進(jìn)程,就是它自己。在這個(gè)JVM環(huán)境中,所有程序代碼的運(yùn)行都是以線程來運(yùn)行。

一般常見的Java應(yīng)用程序都是單線程的。比如,用java命令運(yùn)行一個(gè)最簡單的HelloWorld的Java應(yīng)用程序時(shí),就啟動了一個(gè)JVM進(jìn)程,JVM找到程序程序的入口點(diǎn)main(),然后運(yùn)行main()方法,這樣就產(chǎn)生了一個(gè)線程,這個(gè)線程稱之為主線程。當(dāng)main方法結(jié)束后,主線程運(yùn)行完成。JVM進(jìn)程也隨即退出 。

對于一個(gè)進(jìn)程中的多個(gè)線程來說,多個(gè)線程共享進(jìn)程的內(nèi)存塊,當(dāng)有新的線程產(chǎn)生的時(shí)候,操作系統(tǒng)不分配新的內(nèi)存,而是讓新線程共享原有的進(jìn)程塊的內(nèi)存。因此,線程間的通信很容易,速度也很快。不同的進(jìn)程因?yàn)樘幱诓煌膬?nèi)存塊,因此進(jìn)程之間的通信相對困難。

進(jìn)程是指一個(gè)內(nèi)存中運(yùn)行的應(yīng)用程序,每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個(gè)進(jìn)程中可以啟動多個(gè)線程。比如在Windows系統(tǒng)中,一個(gè)運(yùn)行的exe就是一個(gè)進(jìn)程。

線程是指進(jìn)程中的一個(gè)執(zhí)行流程,一個(gè)進(jìn)程可以運(yùn)行多個(gè)線程。比如java.exe進(jìn)程可以運(yùn)行很多線程。線程總是輸入某個(gè)進(jìn)程,進(jìn)程中的多個(gè)線程共享進(jìn)程的內(nèi)存。

Java中線程是指java.lang.Thread類的一個(gè)實(shí)例或線程的執(zhí)行。使用java.lang.Thread或java.lang.Runnable接口編寫代碼定義、實(shí)例化、啟動新線程。

Java中每個(gè)線程都有一個(gè)調(diào)用棧,即使不在程序中創(chuàng)建任何新的線程,線程也在后臺運(yùn)行。main()方法運(yùn)行在一個(gè)線程內(nèi),稱為主線程。一旦創(chuàng)建一個(gè)新的線程,就產(chǎn)生一個(gè)新的調(diào)用棧。

線程分為兩類:用戶線程和守候線程。當(dāng)所有用戶線程執(zhí)行完畢后,JVM自動關(guān)閉。但是守候線程卻不獨(dú)立與JVM,守候線程一般是有操作系統(tǒng)或用戶自己創(chuàng)建的。

定義線程

1.擴(kuò)展java.lang.Thread類以及實(shí)現(xiàn)java.lang.Runnable接口。

此類中有run()方法,public void run(),如果該線程是獨(dú)立的Runnable運(yùn)行對象構(gòu)造的,則調(diào)用該Runnable對象的run()方法;否則,該方法不執(zhí)行任何操作。Thread的子類也應(yīng)該重寫該方法。

實(shí)例化線程

1.如果是擴(kuò)展了java.lang.Thread類的線程,則直接調(diào)用new即可。

2.如果是實(shí)現(xiàn)了jav.lang.Runnable接口的類,則調(diào)用Thread的構(gòu)造方法:

Thread(Runnable target)

Thread(Runnable target,String name)

Thread(ThreadGroup group, Runnable target)

Thread(ThreadGroup group, Runnable target, String name)

Thread(ThreadGroup group, Runnable target, String name, long stackSize)

啟動線程

在線程的Thread對象上調(diào)用start()方法,而不是run()或別的方法。

在調(diào)用start()方法之前,線程處于新狀態(tài)中,新狀態(tài)有一個(gè)Thread對象,但沒有一個(gè)真正的線程。

在調(diào)用start()方法之后,發(fā)生了一系列復(fù)雜的事情:

啟動新的執(zhí)行線程(具有新的調(diào)用棧);

該線程從新狀態(tài)轉(zhuǎn)移到可運(yùn)行狀態(tài);

當(dāng)該線程獲得執(zhí)行機(jī)會時(shí),其目標(biāo)run()方法將運(yùn)行。

注意事項(xiàng)

1.獲取當(dāng)前線程的對象的方法是:Thread.currentThread();

2.當(dāng)線程目標(biāo)run()方法結(jié)束時(shí)該線程完成。

3.一旦線程啟動,它就永遠(yuǎn)不能再重新啟動。只有一個(gè)新的線程可以被啟動,并且只能一次。一個(gè)可運(yùn)行的線程或死線程可以被重新啟動。

4.線程的調(diào)度是JVM的一部分,在一個(gè)CPU的機(jī)器上上,實(shí)際上一次只能運(yùn)行一個(gè)線程。一次只有一個(gè)線程棧執(zhí)行。JVM線程調(diào)度程序決定實(shí)際運(yùn)行哪個(gè)處于可運(yùn)行狀態(tài)的線程。眾多可運(yùn)行線程中的某一個(gè)會被選中做為當(dāng)前線程。可運(yùn)行線程被選擇運(yùn)行的順序是沒有保障的。

5.盡管通常采用隊(duì)列形式,但這是沒有保障的。隊(duì)列形式是指當(dāng)一個(gè)線程完成“一輪”時(shí),它移到可運(yùn)行隊(duì)列的尾部等待,直到它最終排隊(duì)到該隊(duì)列的前端為止,它才能被再次選中。事實(shí)上,我們把它稱為可運(yùn)行池而不是一個(gè)可運(yùn)行隊(duì)列,目的是幫助認(rèn)識線程并不都是以某種有保障的順序排列一個(gè)隊(duì)列的事實(shí)。

6.盡管我們沒有無法控制線程調(diào)度程序,但可以通過別的方式來影響線程調(diào)度的方式。

以上就是動力節(jié)點(diǎn)小編介紹的"線程的基本概念",希望對大家有幫助,想了解更多可查看Java多線程編程技術(shù)文檔,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 中文字幕日韩欧美 | 欧美特黄一免在线观看 | 欧美日本道免费一区二区三区 | 天天操天天射天天操 | 欧美一级视频在线高清观看 | 91久久精品国产91性色tv | 一品毛片| 调教小荡娃h | 在线观看国产精品日本不卡网 | 中文字幕无线码 | 成人欧美一区在线视频在线观看 | www.婷婷| 一个人在线免费观看www视频 | 日本动漫看片黄a免费看 | 国产成人综合亚洲动漫在线 | 成年看片永远免费 | 欧美一区二区三区在线可观看 | 永久在线 | 欧美在线不卡 | 亚洲欧美人成网站综合在线 | 精品欧美一区二区在线观看 | 99re视频在线 | 一级特黄aaa大片免色 | 免费一级a毛片在线搐放正片 | 国产高清免费的视频 | 好男人免费社区视频www | 日本精品高清一区二区不卡 | 国产在线播放网址 | 成年网站免费入口在线观看 | 天天摸天天草 | 黄网站免费看 | 欧美一区二区不卡视频 | 性xxx69xxx视频在线观看 | 亚洲伊人天堂 | 亚洲一级视频在线观看 | 国内精品久久影视免费 | 窝窝视频成人影院午夜在线 | www.丁香 | 亚洲毛片在线观看 | 在线观看91精品国产不卡免费 | 欧美成人hd |