溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java中的線程介紹

發(fā)布時(shí)間:2020-06-29 11:52:46 來(lái)源:億速云 閱讀:152 作者:Leah 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)java中的線程介紹,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

什么是java線程

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

1、進(jìn)程

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

2、線程

線程是指進(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)存。

3、Java的線程模型

由于Java是純面向?qū)ο笳Z(yǔ)言,因此,Java的線程模型也是面向?qū)ο蟮?。Java通過(guò)Thread類(lèi)將線程所必須的功能都封裝了起來(lái)。要想建立一個(gè)線程,必須要有一個(gè)線程執(zhí)行函數(shù),這個(gè)線程執(zhí)行函數(shù)對(duì)應(yīng)Thread類(lèi)的run方法。Thread類(lèi)還有一個(gè)start方法,這個(gè)方法負(fù)責(zé)建立線程,相當(dāng)于調(diào)用Windows的建立線程函數(shù)CreateThread。當(dāng)調(diào)用start方法后,如果線程建立成功,并自動(dòng)調(diào)用Thread類(lèi)的run方法。因此,任何繼承Thread的Java類(lèi)都可以通過(guò)Thread類(lèi)的start方法來(lái)建立線程。如果想運(yùn)行自己的線程執(zhí)行函數(shù),那就要覆蓋Thread類(lèi)的run方法。

在Java的線程模型中除了Thread類(lèi),還有一個(gè)標(biāo)識(shí)某個(gè)Java類(lèi)是否可作為線程類(lèi)的接口Runnable,這個(gè)接口只有一個(gè)抽象方法run,也就是Java線程模型的線程執(zhí)行函數(shù)。因此,一個(gè)線程類(lèi)的唯一標(biāo)準(zhǔn)就是這個(gè)類(lèi)是否實(shí)現(xiàn)了Runnable接口的run方法,也就是說(shuō),擁有線程執(zhí)行函數(shù)的類(lèi)就是線程類(lèi)。

從上面可以看出,在Java中建立線程有兩種方法,一種是繼承Thread類(lèi),另一種是實(shí)現(xiàn)Runnable接口,并通過(guò)Thread和實(shí)現(xiàn)Runnable的類(lèi)來(lái)建立線程,其實(shí)這兩種方法從本質(zhì)上說(shuō)是一種方法,即都是通過(guò)Thread類(lèi)來(lái)建立線程,并運(yùn)行run方法的。但它們的大區(qū)別是通過(guò)繼承Thread類(lèi)來(lái)建立線程,雖然在實(shí)現(xiàn)起來(lái)更容易,但由于Java不支持多繼承,因此,這個(gè)線程類(lèi)如果繼承了Thread,就不能再繼承其他的類(lèi)了,因此,Java線程模型提供了通過(guò)實(shí)現(xiàn)Runnable接口的方法來(lái)建立線程,這樣線程類(lèi)可以在必要的時(shí)候繼承和業(yè)務(wù)有關(guān)的類(lèi),而不是Thread類(lèi)。

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

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

關(guān)于java中的線程介紹就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI