首页 > 其他分享 >如何获取多线程执行的返回值,多线程的第三种实现方式。

如何获取多线程执行的返回值,多线程的第三种实现方式。

时间:2023-06-20 23:34:12浏览次数:42  
标签:构造方法 对象 创建 MyCallable 第三种 FutureTask 返回值 多线程

多线程的第三种实现方式主要有以下步骤。

1、创建一个类#MyCallable实现Callable接口。在泛型中指定多线程执行后要返回的数据类型

2、在MyCallable方法种重写call方法,此方法的内容,便是多线程的执行内容。类似于run方法。

3、将MyCallable对象实例化。

4、创建FutureTask<Integer>的对象并将之前实例化的MyCallable对象作为FutureTask对象的构造方法参数。

5、创建线程对象并将FutureTask作为构造方法参数传给多线程构造方法。

代码如下

创建Mycallable类

 1 public class MyCallable implements Callable<Integer> {
 2     @Override
 3     public Integer call() throws Exception {
 4         int num = 0;
 5         for (int i = 0; i <= 100; i++) {
 6             num +=i;
 7         }
 8         return num;
 9     }
10 }

主函数实现

 1 public static void main(String[] args) throws ExecutionException, InterruptedException {
 2         //创建MyCallable对象用来表示多线程要执行的任务
 3         MyCallable myCallable = new MyCallable();
 4         //创建FutureTask<Integer>对象用来管理多线程运行的结果
 5         FutureTask<Integer> future = new FutureTask<>(myCallable);
 6         //创建线程对象
 7         Thread thread = new Thread(future);
 8         //执行线程
 9         thread.start();
10 
11         //获取多线程的运行结果
12         Integer result = future.get();
13         //结果输出
14         System.out.println(result);
15         
16     }

 

标签:构造方法,对象,创建,MyCallable,第三种,FutureTask,返回值,多线程
From: https://www.cnblogs.com/qi-Blog/p/17495143.html

相关文章

  • boost库之多线程
    一、线程管理在这个库最重要的一个类就是 boost::thread,它是在 boost/thread.hpp 里定义的,用来创建一个新线程。下面的示例来说明如何运用它:#include<boost/thread.hpp>#include<string>#include<iostream>voidwait(intseconds){boost::this_thread::slee......
  • VS2008开发的基于WinCE的网络服务器端和客户端程序多线程,线程同步,TCP/IP网络通讯、阻
    VS2008开发的基于WinCE的网络服务器端和客户端程序多线程,线程同步,TCP/IP网络通讯、阻塞式套接字发送数据与接收数据、……提供VC++源码以及固高嵌入式运动控制器的源代码,顾高运动控制器通过OtoStudio的ST语言编写,5轴电子凸轮,三轴电子齿轮控制同步带,一轴跟随主轴加速、同步、减速、......
  • 一文掌握Python多线程与多进程
    Python的多线程和多进程一、简介并发是今天计算机编程中的一项重要能力,尤其是在面对需要大量计算或I/O操作的任务时。Python提供了多种并发的处理方式,本篇文章将深入探讨其中的两种:多线程与多进程,解析其使用场景、优点、缺点,并结合代码例子深入解读。二、多线程Python中的线程......
  • 一文掌握Python多线程与多进程
    Python的多线程和多进程一、简介并发是今天计算机编程中的一项重要能力,尤其是在面对需要大量计算或I/O操作的任务时。Python提供了多种并发的处理方式,本篇文章将深入探讨其中的两种:多线程与多进程,解析其使用场景、优点、缺点,并结合代码例子深入解读。二、多线程Python中的线......
  • 开启多线程
    在service层直接在方法上注解开启@Async("getyourPool")准备配置@Configuration@EnableAsync@Slf4jpublicclassyourConfig{@Value("${thread.pool.keepAliveSeconds:300}")privateintkeepAliveSeconds;@Value("${thread.pool.maxPoolSize:12}&quo......
  • C++11:多线程
    传统的C++(C++11之前)中并没有引入线程这个概念C++11引入了头文件<thread>,提供了管理线程保护共享数据线程间同步操作原子操作等  <thread>join()detach()get_id()yield()sleep_for()sleep_until() #include<thread>intmain(){ std::threadt......
  • 多线程面试题
    1.多线程的主要参数有哪些,有什么用?1)corePoolSize(核心线程数)指的是长期存活的线程数。比如地主家的长工,无论这一年活多还是活少,都不会被辞退。2)maximumPoolSize(最大线程数)指的是线程池允许创建的最大线程数,其中包含核心线程数(最大线程数>=核心线程数)。比如地主家临时活太多,长......
  • 用户态多线程实现的基本原理
    本文参考了用户态非抢占式线程库实现一文以及GNUPth。前者是一种用户态线程库的简单实现,属于一个很好的demo,后者就是大家熟知的Pthread的用户态实现,比较完善。 Keywords:User-SpaceMultiThreading,Pth 所谓多线程,简单讲就是能够让几个不同的代码片段轮流执行。内核实现多线......
  • std::thread 六:多线程&单例类
     为了避免单例类在多线程中重复的创建,下面提供了两种解决方法:1.互斥锁+双重检查2.std::call_once() 方法一:互斥锁+双重检查#include<iostream>#include<thread>#include<mutex>#include<list>usingnamespacestd;std::mutexmy_mutex;//创建一个单......
  • Java多线程-Lesson01-线程的创建
    线程创建的三种方式继承Thread类步骤:继承Thread类重写run()方法调用start()开启线程重写run()方法:@Overridepublicvoidrun(){for(inti=0;i<200;i++){System.out.println("run():"+i);}} run()方法里面就是我们多......