21xrx.com
2024-11-22 03:32:55 Friday
登录
文章检索 我的文章 写文章
Java如何编写多线程获取结果的代码
2023-07-05 03:06:11 深夜i     --     --
Java 多线程编程 结果获取 代码编写 并发编程

在Java中,多线程是一种常用的技术,它能够提高程序的执行效率。而在某些情况下,我们需要同时启用多个线程,以便并行地执行任务,从而更快地获取结果。

以下是Java编写多线程获取结果的代码,步骤如下:

1.定义一个实现Callable接口的类,在该类中定义具体的业务逻辑,返回需要的结果。


public class ThreadTask implements Callable<Integer> {

  private int num;

  public ThreadTask(int num)

    this.num = num;

  

  @Override

  public Integer call() throws Exception {

    // 定义具体的业务逻辑

    // 返回需要的结果

    return num * num;

  }

}

2.在主线程中定义一个ExecutorService对象,并通过它启动多个线程,提交任务。


public class MainThread {

  public static void main(String[] args) {

    // 定义一个ExecutorService对象

    ExecutorService executorService = Executors.newFixedThreadPool(5);

    // 启动多个线程,提交任务

    CompletableFuture<Integer> future1 = executorService.submit(new ThreadTask(1));

    CompletableFuture<Integer> future2 = executorService.submit(new ThreadTask(2));

    CompletableFuture<Integer> future3 = executorService.submit(new ThreadTask(3));

    CompletableFuture<Integer> future4 = executorService.submit(new ThreadTask(4));

    CompletableFuture<Integer> future5 = executorService.submit(new ThreadTask(5));

    // 关闭ExecutorService

    executorService.shutdown();

  }

}

3.通过CompletableFuture对象获取每个线程的执行结果。


public class MainThread {

  public static void main(String[] args) throws ExecutionException, InterruptedException {

    // 定义一个ExecutorService对象

    ExecutorService executorService = Executors.newFixedThreadPool(5);

    // 启动多个线程,提交任务

    CompletableFuture<Integer> future1 = executorService.submit(new ThreadTask(1));

    CompletableFuture<Integer> future2 = executorService.submit(new ThreadTask(2));

    CompletableFuture<Integer> future3 = executorService.submit(new ThreadTask(3));

    CompletableFuture<Integer> future4 = executorService.submit(new ThreadTask(4));

    CompletableFuture<Integer> future5 = executorService.submit(new ThreadTask(5));

    // 关闭ExecutorService

    executorService.shutdown();

    // 通过CompletableFuture对象获取每个线程的执行结果

    int result1 = future1.get();

    int result2 = future2.get();

    int result3 = future3.get();

    int result4 = future4.get();

    int result5 = future5.get();

    System.out.println("result1 = " + result1);

    System.out.println("result2 = " + result2);

    System.out.println("result3 = " + result3);

    System.out.println("result4 = " + result4);

    System.out.println("result5 = " + result5);

  }

}

以上就是Java编写多线程获取结果的代码示例,通过这种方式,我们可以在利用多核CPU资源的同时,更快地获取到结果。同时需要注意,要确保线程之间的数据访问是线程安全的,避免出现数据竞争等问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复