在Java中,可以使用線程池(ExecutorService)和Callable接口來實現多線程任務分配。以下是一個簡單的示例:
import java.util.concurrent.Callable;
public class Task implements Callable<String> {
private int taskId;
public Task(int taskId) {
this.taskId = taskId;
}
@Override
public String call() throws Exception {
// 在這里執行任務
System.out.println("Task " + taskId + " is running by " + Thread.currentThread().getName());
return "Task " + taskId + " completed";
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) {
// 創建一個固定大小的線程池
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 創建任務列表
List<Future<String>> futures = new ArrayList<>();
// 提交任務
for (int i = 0; i < 5; i++) {
Task task = new Task(i);
Future<String> future = executorService.submit(task);
futures.add(future);
}
// 獲取任務結果
for (Future<String> future : futures) {
try {
System.out.println(future.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
// 關閉線程池
executorService.shutdown();
}
}
在這個示例中,我們創建了一個固定大小為3的線程池,并提交了5個任務。線程池會自動分配任務給空閑的線程,并在任務完成后返回結果。最后,我們關閉線程池以釋放資源。