溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中的線程是什么?如何使用線程

發(fā)布時間:2020-06-19 10:25:31 來源:億速云 閱讀:143 作者:Leah 欄目:編程語言

java中的線程是什么?如何使用線程?這些問題可能是我們日常工作會見到的。通過這些問題,希望你能收獲更多。下面是揭開這些問題的詳細內容。

什么是線程

線程是指進程中的一個執(zhí)行流程,一個進程中可以運行多個線程。比如java.exe進程中可以運行很多線程。線程總是屬于某個進程,進程中的多個線程共享進程的內存。

在Java中,“線程”指兩件不同的事情:

1、java.lang.Thread類的一個實例;

2、線程的執(zhí)行。

使用java.lang.Thread類或者java.lang.Runnable接口編寫代碼來定義、實例化和啟動新線程。

一個Thread類實例只是一個對象,像Java中的任何其他對象一樣,具有變量和方法,生死于堆上。

Java中,每個線程都有一個調用棧,即使不在程序中創(chuàng)建任何新的線程,線程也在后臺運行著。

一個Java應用總是從main()方法開始運行,mian()方法運行在一個線程內,它被稱為主線程。

一旦創(chuàng)建一個新的線程,就產(chǎn)生一個新的調用棧。

線程總體分兩類:用戶線程和守候線程。

當所有用戶線程執(zhí)行完畢的時候,JVM自動關閉。但是守候線程卻不獨立于JVM,守候線程一般是由操作系統(tǒng)或者用戶自己創(chuàng)建的。

Java線程:創(chuàng)建與啟動

一、定義線程

1、擴展java.lang.Thread類。

此類中有個run()方法,應該注意其用法:

public void run()

如果該線程是使用獨立的Runnable運行對象構造的,則調用該Runnable對象的run方法;否則,該方法不執(zhí)行任何操作并返回。

Thread的子類應該重寫該方法。

2、實現(xiàn)java.lang.Runnable接口。

void run()

使用實現(xiàn)接口Runnable的對象創(chuàng)建一個線程時,啟動該線程將導致在獨立執(zhí)行的線程中調用對象的run方法。

方法run的常規(guī)協(xié)定是,它可能執(zhí)行任何所需的操作。

二、實例化線程

1、如果是擴展java.lang.Thread類的線程,則直接new即可。

2、如果是實現(xiàn)了java.lang.Runnable接口的類,則用Thread的構造方法:

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對象上調用start()方法,而不是run()或者別的方法。

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

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

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

該線程從新狀態(tài)轉移到可運行狀態(tài);

當該線程獲得機會執(zhí)行時,其目標run()方法將運行。

注意:對Java來說,run()方法沒有任何特別之處。像main()方法一樣,它只是新線程知道調用的方法名稱(和簽名)。因此,在Runnable上或者Thread上調用run方法是合法的。但并不啟動新的線程。

看完上述內容,你們對java中的線程有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀。

向AI問一下細節(jié)

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

AI