簡單了解Java創(chuàng)建線程兩種方法
這篇文章主要介紹了簡單了解Java創(chuàng)建線程兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Java實現(xiàn)并啟動線程有兩種方法
1、寫一個類繼承自Thread類,重寫run方法。用start方法啟動線程
2、寫一個類實現(xiàn)Runnable接口,實現(xiàn)run方法。用new Thread(Runnable target).start()方法來啟動
注意:start方法不是立即執(zhí)行多線程,而是使得該線程變?yōu)榫途w態(tài)(Runnable)
1.通過擴展Thread類來創(chuàng)建線程
(1)定義Thread類的子類,并重寫該類的run方法,該run方法的方法體就代表了線程要完成的任務(wù)。因此把run()方法稱為執(zhí)行體。
(2)創(chuàng)建Thread子類的實例,即創(chuàng)建了線程對象。
(3)調(diào)用線程對象的start()方法來啟動該線程。
public class MutliThreadDemo {
public static void main(String[] args) {
//創(chuàng)建Thread子類的實例,即創(chuàng)建了線程對象
MutliTread mt1 = new MutliTread("Thread");
//不立即執(zhí)行多線程代碼,而是使得該線程變?yōu)榫途w態(tài)(Runnable)
mt1.start();
}
}
//通過擴展Thread類來創(chuàng)建線程
class MutliTread extends Thread{
public MutliTread(String name) {
this.setName(name);
//或super(name)
}
public void run() {
for(int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
2.通過Runnable接口創(chuàng)建線程
(1)定義runnable接口的實現(xiàn)類,并實現(xiàn)該接口的run()方法,該run()方法的方法體同樣是該線程的線程執(zhí)行體。
(2)創(chuàng)建 Runnable實現(xiàn)類的實例,并依此實例作為Thread的target來創(chuàng)建Thread對象,該Thread對象才是真正的線程對象。
(3)調(diào)用線程對象的start()方法來啟動該線程。
public class MutliThreadDemo3 {
public static void main(String[] args) {
//創(chuàng)建一個Runnable接口實現(xiàn)類
MutliTread3 m = new MutliTread3();
//實例化線程對象
Thread t1 = new Thread(m, "甲");
Thread t2 = new Thread(m, "乙");
Thread t3 = new Thread(m, "丙");
t1.start();
t2.start();
t3.start();
}
}
class MutliTread3 implements Runnable{
public void run() {
for(int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}
當然第二種方法也可通過匿名內(nèi)部類或lambda表達式實現(xiàn),會更簡潔。以下通過Lambda表達式實現(xiàn)run方法:
public class MutliThreadDemo3 {
public static void main(String[] args) {
Runnable r = () -> {
for(int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
};
//實例化線程對象
Thread t1 = new Thread(r, "甲");
Thread t2 = new Thread(r, "乙");
Thread t3 = new Thread(r, "丙");
t1.start();
t2.start();
t3.start();
}
}
注:以上三種方式(本質(zhì)上是兩種)創(chuàng)建的三個線程其實是互相獨立的
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Java 并發(fā)編程中如何創(chuàng)建線程
- Java創(chuàng)建并運行線程的方法
- 詳解Java創(chuàng)建多線程的四種方式以及優(yōu)缺點
- java 創(chuàng)建線程的四種方式
- Java線程創(chuàng)建靜態(tài)代理模式代碼實例
- Java創(chuàng)建多線程的幾種方式實現(xiàn)
- Java創(chuàng)建多線程異步執(zhí)行實現(xiàn)代碼解析
- Java 創(chuàng)建線程的3種方法及各自的優(yōu)點
- JAVA 創(chuàng)建線程池的注意事項
- java并發(fā)編程專題(二)----如何創(chuàng)建并運行java線程
- Java創(chuàng)建子線程的兩種方法
- Java使用Callable和Future創(chuàng)建線程操作示例
- Java多線程——之一創(chuàng)建線程的四種方法
- Java多線程之線程的創(chuàng)建
相關(guān)文章
SpringBoot Controller Post接口單元測試示例
今天小編就為大家分享一篇關(guān)于SpringBoot Controller Post接口單元測試示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
Java進行反編譯生成.java文件方式(javap、jad下載安裝使用)
這篇文章主要介紹了Java進行反編譯生成.java文件方式(javap、jad下載安裝使用),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
elasticsearch分布式及數(shù)據(jù)的功能源碼分析
這篇文章主要為大家介紹了elasticsearch分布式及數(shù)據(jù)功能源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
這篇文章主要介紹了Java中的?HTTP?協(xié)議原理詳解,HTTP超文本傳輸協(xié)議,下文簡稱?HTTP,它的作用是用于實現(xiàn)服務(wù)器端和客戶端的數(shù)據(jù)傳輸?shù)?/div> 2022-07-07
以Json形式的數(shù)據(jù)格式實現(xiàn)JMeter參數(shù)化
本文以小項目學院管理系統(tǒng)為例,給大家分享以Json形式的數(shù)據(jù)格式實現(xiàn)JMeter參數(shù)化的相關(guān)知識,包括添加元件操作步驟及使用用戶參數(shù)組件實現(xiàn)參數(shù)化的方法,感興趣的朋友跟隨小編一起看看吧2021-05-05
Spring Boot+Shiro實現(xiàn)一個Http請求的Basic認證
本文向向大家仔細的介紹了如何使用Shiro實現(xiàn)一個Http請求的Basic認證,有此需求的朋友可以參考下本文2021-06-06最新評論

