Java 開啟多線程常見的4種方法如下:
創(chuàng)建一個(gè)繼承自 Thread 類的子類,并重寫 run() 方法。然后通過創(chuàng)建該子類的對(duì)象來開啟線程。
class MyThread extends Thread {
public void run() {
// 線程執(zhí)行的代碼
}
}
// 創(chuàng)建線程對(duì)象并開啟線程
MyThread thread = new MyThread();
thread.start();
創(chuàng)建一個(gè)實(shí)現(xiàn)了 Runnable 接口的類,并實(shí)現(xiàn) run() 方法。然后通過創(chuàng)建該類的對(duì)象,并將其傳遞給 Thread 的構(gòu)造函數(shù)來開啟線程。
class MyRunnable implements Runnable {
public void run() {
// 線程執(zhí)行的代碼
}
}
// 創(chuàng)建線程對(duì)象并開啟線程
Thread thread = new Thread(new MyRunnable());
thread.start();
創(chuàng)建一個(gè)實(shí)現(xiàn)了 Callable 接口的類,并實(shí)現(xiàn) call() 方法。然后創(chuàng)建一個(gè) FutureTask 對(duì)象,將 Callable 對(duì)象作為參數(shù)傳遞給 FutureTask 的構(gòu)造函數(shù)。最后通過創(chuàng)建 Thread 對(duì)象,將 FutureTask 對(duì)象作為參數(shù)傳遞給 Thread 的構(gòu)造函數(shù)來開啟線程。
class MyCallable implements Callable<Integer> {
public Integer call() throws Exception {
// 線程執(zhí)行的代碼
return 1;
}
}
// 創(chuàng)建 Callable 對(duì)象和 FutureTask 對(duì)象
Callable<Integer> callable = new MyCallable();
FutureTask<Integer> futureTask = new FutureTask<>(callable);
// 創(chuàng)建線程對(duì)象并開啟線程
Thread thread = new Thread(futureTask);
thread.start();
使用 Executors 類提供的靜態(tài)方法創(chuàng)建一個(gè)線程池對(duì)象,然后將需要執(zhí)行的任務(wù)提交給線程池進(jìn)行處理。
ExecutorService executorService = Executors.newFixedThreadPool(10);
Runnable task = new Runnable() {
public void run() {
// 線程執(zhí)行的代碼
}
};
// 提交任務(wù)給線程池處理
executorService.submit(task);
// 關(guān)閉線程池
executorService.shutdown();