更新時(shí)間:2021-10-09 10:57:45 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1614次
通過(guò)擴(kuò)展 Thread 類(lèi)
通過(guò)實(shí)現(xiàn) Runnable 接口。
Thread 類(lèi)提供構(gòu)造函數(shù)和方法來(lái)創(chuàng)建和執(zhí)行線程上的操作。Thread 類(lèi)擴(kuò)展了 Object 類(lèi)并實(shí)現(xiàn)了 Runnable 接口。
Thread類(lèi)的常用構(gòu)造函數(shù):
線()
線程(字符串名稱(chēng))
線程(可運(yùn)行 r)
線程(Runnable r,字符串名稱(chēng))
public void run():用于為線程執(zhí)行操作。
public void start():開(kāi)始線程的執(zhí)行。JVM在線程上調(diào)用run()方法。
public void sleep(long miliseconds):使當(dāng)前正在執(zhí)行的線程休眠(暫時(shí)停止執(zhí)行)指定的毫秒數(shù)。
public void join():等待一個(gè)線程死亡。
public void join(long miliseconds):等待一個(gè)線程在指定的毫秒內(nèi)死亡。
public int getPriority():返回線程的優(yōu)先級(jí)。
public int setPriority(int priority):改變線程的優(yōu)先級(jí)。
public String getName():返回線程的名稱(chēng)。
public void setName(String name):更改線程的名稱(chēng)。
public Thread currentThread():返回當(dāng)前執(zhí)行線程的引用。
public int getId():返回線程的id。
public Thread.State getState():返回線程的狀態(tài)。
public boolean isAlive():測(cè)試線程是否存活。
public void yield():使當(dāng)前正在執(zhí)行的線程對(duì)象暫時(shí)暫停并允許其他線程執(zhí)行。
public void suspend():用于掛起線程(已棄用)。
public void resume():用于恢復(fù)掛起的線程(已棄用)。
public void stop():用于停止線程(已棄用)。
public boolean isDaemon():測(cè)試線程是否為守護(hù)線程。
public void setDaemon(boolean b):將線程標(biāo)記為守護(hù)進(jìn)程或用戶(hù)線程。
public void interrupt():中斷線程。
public boolean isInterrupted():測(cè)試線程是否被中斷。
public static boolean interrupted():測(cè)試當(dāng)前線程是否被中斷。
Runnable 接口應(yīng)該由其實(shí)例旨在由線程執(zhí)行的任何類(lèi)實(shí)現(xiàn)。Runnable 接口只有一個(gè)名為 run() 的方法。
public void run():用于為線程執(zhí)行操作。
Thread 類(lèi)的start() 方法用于啟動(dòng)新創(chuàng)建的線程。它執(zhí)行以下任務(wù):
一個(gè)新線程開(kāi)始(使用新的調(diào)用堆棧)。
線程從 New 狀態(tài)移動(dòng)到 Runnable 狀態(tài)。
當(dāng)線程有機(jī)會(huì)執(zhí)行時(shí),它的目標(biāo) run() 方法將運(yùn)行。
1.通過(guò)擴(kuò)展 Thread 類(lèi)的 Java 線程示例
文件名: Multi.java
class Multi extends Thread{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
Multi t1=new Multi();
t1.start();
}
}
輸出:
線程正在運(yùn)行...
2.通過(guò)實(shí)現(xiàn) Runnable 接口的 Java 線程示例
文件名: Multi3.java
class Multi3 implements Runnable{
public void run(){
System.out.println("thread is running...");
}
public static void main(String args[]){
Multi3 m1=new Multi3();
Thread t1 =new Thread(m1); // Using the constructor Thread(Runnable r)
t1.start();
}
}
輸出:
線程正在運(yùn)行...
如果您不擴(kuò)展 Thread 類(lèi),則您的類(lèi)對(duì)象不會(huì)被視為線程對(duì)象。所以需要顯式創(chuàng)建Thread類(lèi)對(duì)象。我們正在傳遞實(shí)現(xiàn) Runnable 的類(lèi)的對(duì)象,以便您的類(lèi) run() 方法可以執(zhí)行。
3.使用線程類(lèi):Thread(String Name)
我們可以使用上面定義的構(gòu)造函數(shù)直接使用 Thread 類(lèi)來(lái)生成新線程。
文件名: MyThread1.java
public class MyThread1
{
// Main method
public static void main(String argvs[])
{
// creating an object of the Thread class using the constructor Thread(String name)
Thread t= new Thread("My first thread");
// the start() method moves the thread to the active state
t.start();
// getting the thread name by invoking the getName() method
String str = t.getName();
System.out.println(str);
}
}
輸出:
我的第一個(gè)線程
(4)使用線程類(lèi):Thread(Runnable r, String name)
觀察以下程序。
文件名: MyThread2.java
public class MyThread2 implements Runnable
{
public void run()
{
System.out.println("Now the thread is running ...");
}
// main method
public static void main(String argvs[])
{
// creating an object of the class MyThread2
Runnable r1 = new MyThread2();
// creating an object of the class Thread using Thread(Runnable r, String name)
Thread th1 = new Thread(r1, "My new thread");
// the start() method moves the thread to the active state
th1.start();
// getting the thread name by invoking the getName() method
String str = th1.getName();
System.out.println(str);
}
}
輸出:
我的新線程
現(xiàn)在線程正在運(yùn)行...
如果大家對(duì)此感興趣,想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java多線程編程教程,里面的內(nèi)容豐富,通俗易懂,適合沒(méi)有基礎(chǔ)的朋友學(xué)習(xí),希望對(duì)大家能夠有所幫助。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)