Java多線程實(shí)現(xiàn)的兩種方式
java多線程實(shí)現(xiàn)方式主要有兩種:繼承Thread類、實(shí)現(xiàn)Runnable接口
1、繼承Thread類實(shí)現(xiàn)多線程
繼承Thread類的方法盡管被我列為一種多線程實(shí)現(xiàn)方式,但Thread本質(zhì)上也是實(shí)現(xiàn)了Runnable接口的一個(gè)實(shí)例,它代表一個(gè)線程的實(shí)例,并且,啟動(dòng)線程的唯一方法就是通過(guò)Thread類的start()實(shí)例方法。start()方法是一個(gè)native方法,它將啟動(dòng)一個(gè)新線程,并執(zhí)行run()方法。這種方式實(shí)現(xiàn)多線程很簡(jiǎn)單,通過(guò)自己的類直接extend Thread,并復(fù)寫(xiě)run()方法,就可以啟動(dòng)新線程并執(zhí)行自己定義的run()方法。例如:
public class MaYi extends Thread {
String name;
public MaYi(String name){
this.name = name;
}
public void run(){
while(true){
try {
Thread.sleep(1000);//等待1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(name+"螞蟻正在下載......");
}
}
}
啟動(dòng)線程:
public static void main1(String[] args) {
MaYi m1 = new MaYi("1號(hào)");
m1.start();
MaYi m2 = new MaYi("2號(hào)");
m2.start();

2、實(shí)現(xiàn)Runnable接口方式實(shí)現(xiàn)多線程
如果自己的類已經(jīng)繼承另一個(gè)類,就無(wú)法直接extends Thread,此時(shí),必須實(shí)現(xiàn)一個(gè)Runnable接口,如下:
public class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread.run()");
}
}
為了啟動(dòng)MyThread,需要首先實(shí)例化一個(gè)Thread,并傳入自己的MyThread實(shí)例:
MyThread myThread = new MyThread(); Thread thread = new Thread(myThread); thread.start();
事實(shí)上,當(dāng)傳入一個(gè)Runnable target參數(shù)給Thread后,Thread的run()方法就會(huì)調(diào)用target.run(),參考JDK源代碼:
public void run() {
if (target != null) {
target.run();
}
}
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- Java多線程中的單例模式兩種實(shí)現(xiàn)方式
- 詳細(xì)解讀JAVA多線程實(shí)現(xiàn)的三種方式
- java實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法
- 總結(jié)Java中線程的狀態(tài)及多線程的實(shí)現(xiàn)方式
- 詳解Java實(shí)現(xiàn)多線程的三種方式
- Java 實(shí)現(xiàn)多線程的幾種方式匯總
- Java多線程的實(shí)現(xiàn)方式比較(兩種方式比較)
- 詳解三種java實(shí)現(xiàn)多線程的方式
- java基本教程之常用的實(shí)現(xiàn)多線程的兩種方式 java多線程教程
- 淺談Java的兩種多線程實(shí)現(xiàn)方式
相關(guān)文章
Springboot2.x結(jié)合Mabatis3.x下Hikari連接數(shù)據(jù)庫(kù)報(bào)超時(shí)錯(cuò)誤
本文針對(duì)Springboot2.x與Mybatis3.x結(jié)合使用時(shí),Hikari連接數(shù)據(jù)庫(kù)出現(xiàn)超時(shí)錯(cuò)誤的問(wèn)題進(jìn)行了深入分析,并提供了一系列有效的解決方法,感興趣的可以了解一下2023-11-11
詳細(xì)聊聊RabbitMQ竟無(wú)法反序列化List問(wèn)題
這篇文章主要給大家介紹了關(guān)于RabbitMQ竟無(wú)法反序列化List的相關(guān)資料,文中通過(guò)示例代碼將問(wèn)題以及解決的過(guò)程介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09
SpringBoot中實(shí)現(xiàn)數(shù)據(jù)脫敏處理的方法詳解
項(xiàng)目開(kāi)發(fā)中,在處理敏感信息時(shí),數(shù)據(jù)脫敏是一項(xiàng)重要的安全措施,本文主要為大家介紹了如何在SpringBoot項(xiàng)目中進(jìn)行數(shù)據(jù)脫敏處理,有需要的可以了解下2025-03-03
SpringMvc響應(yīng)數(shù)據(jù)及結(jié)果視圖實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringMvc響應(yīng)數(shù)據(jù)及結(jié)果視圖實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
深度剖析Java成員變量、局部變量和靜態(tài)變量的創(chuàng)建和回收時(shí)機(jī)
這篇文章主要介紹了深度剖析Java成員變量、局部變量和靜態(tài)變量的創(chuàng)建和回收時(shí)機(jī),成員變量是定義在類中的變量,每個(gè)類的實(shí)例都會(huì)擁有自己的成員變量。它們的生命周期與對(duì)象的創(chuàng)建和銷毀相對(duì)應(yīng),下面我將詳細(xì)介紹它們的特點(diǎn)和生命周期,需要的朋友可以參考下2023-07-07

