在 Java 中,可以使用線程池來(lái)啟動(dòng)多線程。以下是使用線程池啟動(dòng)多線程的示例代碼:
首先,需要導(dǎo)入 java.util.concurrent.ExecutorService
和 java.util.concurrent.Executors
類。
然后,可以使用 Executors.newFixedThreadPool()
方法創(chuàng)建一個(gè)固定大小的線程池。
接下來(lái),可以使用 submit()
方法向線程池提交一個(gè) Runnable
對(duì)象,表示要執(zhí)行的任務(wù)。線程池會(huì)自動(dòng)為該任務(wù)分配一個(gè)空閑線程來(lái)執(zhí)行。
最后,使用 shutdown()
方法關(guān)閉線程池,以確保所有任務(wù)都已完成。
以下是一個(gè)完整的示例代碼:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
// 創(chuàng)建一個(gè)固定大小為 5 的線程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 向線程池提交 10 個(gè)任務(wù)
for (int i = 0; i < 10; i++) {
Runnable task = new MyTask(i);
executor.submit(task);
}
// 關(guān)閉線程池
executor.shutdown();
}
}
class MyTask implements Runnable {
private int taskId;
public MyTask(int taskId) {
this.taskId = taskId;
}
@Override
public void run() {
System.out.println("Task ID : " + taskId + " executed by " + Thread.currentThread().getName());
}
}
上述代碼創(chuàng)建了一個(gè)固定大小為 5 的線程池,然后向線程池提交 10 個(gè)任務(wù)(MyTask
類的實(shí)例),每個(gè)任務(wù)都會(huì)在一個(gè)空閑線程中執(zhí)行。輸出結(jié)果類似于:
Task ID : 0 executed by pool-1-thread-1
Task ID : 1 executed by pool-1-thread-2
Task ID : 2 executed by pool-1-thread-3
Task ID : 3 executed by pool-1-thread-4
Task ID : 4 executed by pool-1-thread-5
Task ID : 5 executed by pool-1-thread-2
Task ID : 6 executed by pool-1-thread-3
Task ID : 7 executed by pool-1-thread-1
Task ID : 8 executed by pool-1-thread-4
Task ID : 9 executed by pool-1-thread-5
這表明任務(wù)在不同的線程中并行執(zhí)行。