Java中創(chuàng)建線程的兩種方式詳細(xì)說明
Java中創(chuàng)建線程的兩種方式
創(chuàng)建線程方式一
通過繼承Thread類來創(chuàng)建并啟動多線程
Java使用java.lang.Thread類代表線程,所有的線程對象都必須是Thread類或其子類的實(shí)例。每個(gè)線程的作用是完成一定的任務(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();
// 這個(gè)循環(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對象的時(shí)候,作為構(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輕松實(shí)現(xiàn)Excel與CSV格式互轉(zhuǎn)(含批量轉(zhuǎn)換)
在 Java 開發(fā)中,經(jīng)常會遇到需要在 Excel 和 CSV 文件之間進(jìn)行數(shù)據(jù)轉(zhuǎn)換的場景,本文將分享如何在 Java 中實(shí)現(xiàn)單文件和批量的 Excel 與 CSV 轉(zhuǎn)換方法,希望對大家有所幫助2025-09-09
springboot Validated失效的問題及解決思路
文章主要介紹了Java Bean Validation(JSR 303/JSR 349)和Hibernate Validator的基本用法,包括常用注解的使用、@Valid和@Validated注解的區(qū)別、如何自定義校驗(yàn)注解以及如何在Spring Boot中使用這些校驗(yàn)機(jī)制2026-01-01
Java中隊(duì)列(Queue)和列表(List)的區(qū)別解析
Java中的列表(List)和隊(duì)列(Queue)是兩種常用的數(shù)據(jù)結(jié)構(gòu),它們分別用于不同的場景,列表是有序的,支持隨機(jī)訪問,允許重復(fù)元素,并且可以通過索引插入或刪除元素,下面通過本文給大家介紹Java中隊(duì)列(Queue)和列表(List)的區(qū)別,感興趣的朋友一起看看吧2025-03-03
解決IntelliJ?IDEA輸出中文顯示為問號問題的有效方法
最近剛學(xué)到文件字節(jié)流這里,但輸出中文時(shí),出現(xiàn)了控制臺輸出問號的情況,所以下面這篇文章主要給大家介紹了關(guān)于如何解決IntelliJ?IDEA輸出中文顯示為問號問題的有效方法,需要的朋友可以參考下2022-07-07
Java實(shí)現(xiàn)文件上傳和url格式校驗(yàn)工具
這篇文章主要介紹了如何使用Java實(shí)現(xiàn)文件上傳和url格式校驗(yàn)工具,主要用于文件類型校驗(yàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-04-04

