首页 > 编程语言 >Java继承 多线程的实现方式——利用 Callable 接口 和 Future 接口方式实现

Java继承 多线程的实现方式——利用 Callable 接口 和 Future 接口方式实现

时间:2023-10-27 16:24:58浏览次数:33  
标签:Java MyCallable 接口 Callable import ft 多线程

利用 Callable 接口 和 Future 接口方式实现:这种实现方式可以获取到多线程运行的结果

 

步骤:

1. 创建一个类,类名比如叫 MyCallable,并实现 Callable 接口

   注:Callable 接口有一个泛型,因为这种方式可以获取到多线程运行的结果,泛型就表示结果的类型

2. 重写 Callable 接口里面的抽象方法 call(),这个抽象方法有返回值,返回值表示 多线程运行的结果,返回值的类型跟 Callable 接口的泛型是一致的

3. 测试类里面先创建 MyCallable 类的对象,这个对象就表示 多线程要执行的任务

4. 创建 Future 接口的实现类 FutureTask 的对象 ft,用来管理多线程运行的结果(泛型表示多线程运行的结果)

5. 创建 Thread 类的对象,表示线程

6. 开启线程

7. 获取多线程运行的结果:ft.get(),返回值就是结果

 

代码示例:

package pojo;

import java.util.concurrent.Callable;

public class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
//求 1到100 之间的和
int sum = 0;
for (int i = 1; i <= 100; i++)
sum += i;
return sum;
}
}
-------------------------------------------------------------
package test;

import pojo.MyCallable;
import pojo.MyRun;
import pojo.MyThread;
import java.util.concurrent.FutureTask;

public class Test13_ThreadDemo {
public static void main(String[] args) throws Exception {
MyCallable mc = new MyCallable();

//用FutureTask的实例化对象 ft 来管理 mc 的结果
FutureTask<Integer> ft = new FutureTask<>(mc);

Thread t1 = new Thread(ft);

t1.start();

//获取多线程运行的结果
Integer result = ft.get();
System.out.println(result);
}
}

 

标签:Java,MyCallable,接口,Callable,import,ft,多线程
From: https://www.cnblogs.com/gagaya2/p/17792608.html

相关文章

  • Java基础 多线程的实现方式——实现 Runnable 接口的方式进行实现
    实现Runnable接口的方式进行实现:1.定义一个类实现 Runnable接口,并实现run方法2.在run方法里面书写该线程要执行的代码3.然后创建这个实现 Runnable接口的类的实例化对象,这个对象其实就表示多线程要执行的任务4.再去创建一个Thread类的对象,然后把 实现 R......
  • javaweb--多表关系实现
    一对多在多的一方建立外键,指向一的一方的主键多对多利用第三张中间表建立连接,第三张中间表包含两个外键,分别连接两张表的主键一对一多用于表的拆分,将实体中经常使用的字段放在一张表中,不经常使用的字段放在另一张表中,提升查询效率。在任何一方设置外键,连接另一方主键,并设置......
  • linux 更换java 版本
    1查看java版本ls/usr/lib/jvm/2设置java版本(根据提示的编号)sudoupdate-alternatives--configjava3设置环境变量sudonano/etc/environment然后添加以下内容:JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"PATH=$JAVA_HOME/bin:$PATH注意,JAVA_HOME需要指向您希望使......
  • Java拾贝第十二天——System类
    System类的常量常量描述publicfinalstaticInputStreamin系统标准输入,一般是键盘publicfinalstaticPrintStreamout系统标准输出,一般是显示器publicfinalstaticPrintStreamerr错误输出可以看到out和err是PrintStream类型的,而in是InputStream类型......
  • Java基础 多线程的实现方式——继承 Thread 类的方式
    多线程的三种实现方式:1.继承Thread类的方式进行实现2.实现Runnable接口的方式进行实现3.利用Callable接口和Future接口方式实现 一、继承Thread类的方式:将类声明为Thread的子类,该子类应重写Thread类的run方法,接下来可以创建子类的对象并启动线程。在......
  • JavaScript 中的this
    在JavaScript中,this关键字的行为使其有别于其他编程语言。与某些语言在编译时确定的不同,在JavaScript中,它是根据函数的调用方式在运行时动态绑定的。这意味着每次调用该函数时this的值都会有所不同。函数上下文类上下文 回调构造函数等用到......
  • 多线程程序是如何执行代码的?
    进程与线程概念、区别、以及线程间的通信概念进程是对程序运行时的封装,是操作系统分配资源的基本单位,实现操作系统的并发。线程是进程的子单位,是CPU调度和分派的基本单位,实现进程内部的并发。是OS识别的最小执行与调度单位,每个线程独占一个虚拟处理器,每个线程完成不同的任务,但......
  • JavaScript 数组存储方式及对象
    一、数组的存储1、当声明一个变量时,vara=111;在后台计算机翻译时,var声明a变量所以此时会产生一个栈内存,变量a的初始值为undefined,然后=111;undefined消失,111的值被赋值给了a。如果多个变量赋值的话,栈内存的执行顺序是先进后出的顺序。也叫做压栈。栈内存属于基础数据......
  • tus java client 使用以及问题说明
    代码来自官方参考,支持在使用的时候发现了一些问题记录下参考代码App.javapackageorg.example;importio.tus.java.client.*;importjava.io.File;importjava.io.IOException;importjava.net.URL;importjava.util.HashMap;importjava.util.Map;publicclassApp{......
  • Java零基础入门-包装类
    前言Java是一种广泛使用的面向对象编程语言,它通过JVM(Java虚拟机)来实现跨平台。如果您刚刚开始学习Java编程语言,那么您可能会发现Java中的包装类是一个挑战。本文将对Java中的包装类进行详细介绍,以帮助您更好地理解Java编程语言。摘要在Java编程语言中,包装类用于将基本数据类型转......