Java中創(chuàng)建線程的兩種方式詳細(xì)說明
Java中創(chuàng)建線程的兩種方式
創(chuàng)建線程方式一
通過繼承Thread類來創(chuàng)建并啟動多線程
Java使用java.lang.Thread類代表線程,所有的線程對象都必須是Thread類或其子類的實(shí)例。每個線程的作用是完成一定的任務(wù),實(shí)際上就是執(zhí)行一段程序流即一段順序執(zhí)行的代碼。Java使用線程執(zhí)行體來代表這段程序流。 Java中通過繼承Thread類來創(chuàng)建并啟動多線程的步驟如下:
- 定義Thread類的子類,并重寫該類的run()方法,該run()方法的方法體就代表了線程需要完成的任務(wù),因此把run()方法稱為線程執(zhí)行體
- 創(chuàng)建Thread子類的實(shí)例,即創(chuàng)建了線程對象
- 調(diào)用線程對象的start()方法來啟動該線程
自定義線程類:
/** * 自定義線程類 */ public class MyThread extends Thread { public MyThread(String name){ super(name); } @Override public void run() { for(int i = 1; i <= 20; i++){ System.out.println(getName() + " " + i); } } }
測試類:
/** * 創(chuàng)建線程方式一: * 1. 創(chuàng)建自定義類繼承Thread類 * 2. 重寫run方法(run方法就是新的線程要執(zhí)行的代碼) * 3. 創(chuàng)建自定義類對象(線程對象) * 4. 調(diào)用start方法開啟新的線程 */ public class Demo01 { public static void main(String[] args) { System.out.println("main線程開啟"); // 創(chuàng)建線程對象 MyThread myThread = new MyThread("線程A"); // 開啟新的線程myThread myThread.start(); // 這個循環(huán)在main線程中執(zhí)行 for (int i = 1; i <= 20; i++) { System.out.println("mian線程 " + i); } } }
創(chuàng)建線程方式二
通過實(shí)現(xiàn)Runnable類來創(chuàng)建并啟動多線程
采用java.lang.Runnable 也是非常常見的一種,我們只需要重寫run方法即可 步驟如下:
- 定義Runnable接口的實(shí)現(xiàn)類,并重寫該接口的run()方法,該run()方法的方法體同樣是該線程的線程執(zhí)行體
- 創(chuàng)建Runnable實(shí)現(xiàn)類的實(shí)例,并以此實(shí)例作為Thread的target來創(chuàng)建Thread對象,該Thread對象才是真正的線程對象
- 調(diào)用線程對象的start()方法來啟動線程
代碼如下:
public class MyRunnable implements Runnable { @Override public void run() { for (int i = 1; i <= 20; i++) { System.out.println(Thread.currentThread().getName() + " " + i); } } }
/** * 創(chuàng)建線程方式二: * 1. 定義自定義類實(shí)現(xiàn)Runnable接口 * 2. 重寫run方法 * 3. 創(chuàng)建自定義對象 * 4. 創(chuàng)建Threed對象的時候,作為構(gòu)造方法的參數(shù)進(jìn)行傳遞 * 5. 啟動線程start方法 */ public class Demo02 { public static void main(String[] args) { // 創(chuàng)建線程任務(wù)對象 MyRunnable myRunnable = new MyRunnable(); // 創(chuàng)建線程對象 Thread t1 = new Thread(myRunnable, "線程A"); Thread t2 = new Thread(myRunnable, "線程B"); // 開啟線程 t1.start(); t2.start(); } }
到此這篇關(guān)于Java中創(chuàng)建線程的兩種方式詳細(xì)說明的文章就介紹到這了,更多相關(guān)Java中創(chuàng)建線程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java向es中寫入數(shù)據(jù)報錯org.elasticsearch.action.ActionReque問題
這篇文章主要介紹了java向es中寫入數(shù)據(jù)報錯org.elasticsearch.action.ActionReque問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11詳解Java Bellman-Ford算法原理及實(shí)現(xiàn)
Bellman-Ford算法與Dijkstra算法類似,都是以松弛操作作為基礎(chǔ),Bellman-Ford算法是對所有邊都進(jìn)行松弛操作,本文將詳解Bellman-Ford算法原理及實(shí)現(xiàn),感興趣的可以了解一下2022-07-07java并發(fā)編程專題(四)----淺談(JUC)Lock鎖
這篇文章主要介紹了java并發(fā)編程(JUC)Lock鎖的相關(guān)內(nèi)容,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06使用kotlin編寫spring cloud微服務(wù)的過程
這篇文章主要介紹了使用kotlin編寫spring cloud微服務(wù)的相關(guān)知識,本文給大家提到配置文件的操作代碼,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09