java多线程怎么实现任务分配

avatar
作者
筋斗云
阅读量:0

在Java中,可以使用线程池(ExecutorService)和Callable接口来实现多线程任务分配。以下是一个简单的示例:

  1. 首先,创建一个实现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";     } } 
  1. 然后,在主程序中创建一个线程池,将任务提交给线程池执行:
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个任务。线程池会自动分配任务给空闲的线程,并在任务完成后返回结果。最后,我们关闭线程池以释放资源。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!