Java啟動(dòng)線程是指在Java程序中創(chuàng)建并啟動(dòng)一個(gè)新的線程。在Java中,可以通過兩種方式來啟動(dòng)線程:繼承Thread類和實(shí)現(xiàn)Runnable接口。
1. 繼承Thread類:
需要?jiǎng)?chuàng)建一個(gè)繼承自Thread類的子類,并重寫其run()方法。在run()方法中定義線程要執(zhí)行的任務(wù)。然后,可以創(chuàng)建該子類的對(duì)象,并調(diào)用其start()方法來啟動(dòng)線程。
示例代碼如下:
`java
public class MyThread extends Thread {
@Override
public void run() {
// 線程要執(zhí)行的任務(wù)
System.out.println("線程正在執(zhí)行");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // 啟動(dòng)線程
}
}
`
通過繼承Thread類創(chuàng)建線程的優(yōu)點(diǎn)是可以直接使用this關(guān)鍵字來訪問當(dāng)前線程的相關(guān)方法和屬性。
2. 實(shí)現(xiàn)Runnable接口:
需要?jiǎng)?chuàng)建一個(gè)實(shí)現(xiàn)了Runnable接口的類,并實(shí)現(xiàn)其run()方法。在run()方法中定義線程要執(zhí)行的任務(wù)。然后,可以創(chuàng)建該類的對(duì)象,并將其作為參數(shù)傳遞給Thread類的構(gòu)造方法來創(chuàng)建Thread對(duì)象。調(diào)用Thread對(duì)象的start()方法來啟動(dòng)線程。
示例代碼如下:
`java
public class MyRunnable implements Runnable {
@Override
public void run() {
// 線程要執(zhí)行的任務(wù)
System.out.println("線程正在執(zhí)行");
}
}
public class Main {
public static void main(String[] args) {
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start(); // 啟動(dòng)線程
}
}
`
通過實(shí)現(xiàn)Runnable接口創(chuàng)建線程的優(yōu)點(diǎn)是可以避免單繼承的限制,因?yàn)镴ava中一個(gè)類只能繼承一個(gè)父類,但可以實(shí)現(xiàn)多個(gè)接口。
無(wú)論是繼承Thread類還是實(shí)現(xiàn)Runnable接口,都可以通過調(diào)用start()方法來啟動(dòng)線程。start()方法會(huì)在新的線程中調(diào)用run()方法,從而執(zhí)行線程的任務(wù)。注意,直接調(diào)用run()方法只會(huì)在當(dāng)前線程中執(zhí)行run()方法的代碼,并不會(huì)啟動(dòng)新的線程。
Java還提供了其他方式來啟動(dòng)線程,例如使用Callable和Future接口、使用線程池等。這些方式可以更靈活地管理和控制線程的執(zhí)行。