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

   2024-09-30 7800
核心提示:在Java中,可以使用线程池(ExecutorService)和Callable接口来实现多线程任务分配。以下是一个简单的示例:首先,创建一个实现C

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

首先,创建一个实现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个任务。线程池会自动分配任务给空闲的线程,并在任务完成后返回结果。最后,我们关闭线程池以释放资源。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号