java 多线程Thread、Runnable和Callable的区别和用法

文章目录Callable实现多线程importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;/**一、创建执行线程的方式三:实现Callable接口。相较于实现Runnable接口的方式,方法可以有返回值,并且可以抛出异常。**二、执行Callable方式,需要FutureT

大家好,又见面了,我是你们的朋友全栈君。

文章目录

Callable 实现多线程

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
 
/*
 * 一、创建执行线程的方式三:实现 Callable 接口。 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常。
 *
 * 二、执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。  FutureTask 是  Future 接口的实现类
 */
public class TestCallable {
 
    public static void main(String[] args) {
        ThreadDemo td = new ThreadDemo();
 
        //1.执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。
        FutureTask<Integer> result = new FutureTask<>(td);
 
        new Thread(result).start();
 
        //2.接收线程运算后的结果
        try {
            Integer sum = result.get();  //FutureTask 可用于 闭锁 类似于CountDownLatch的作用,在所有的线程没有执行完成之后这里是不会执行的
            System.out.println(sum);
            System.out.println("------------------------------------");
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
 
}
 
class ThreadDemo implements Callable<Integer> {
 
    @Override
    public Integer call() throws Exception {
        int sum = 0;
 
        for (int i = 0; i <= 100000; i++) {
            sum += i;
        }
 
        return sum;
    }
 
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126573.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月7日 下午11:40
下一篇 2022年4月7日 下午11:40


相关推荐

  • 在pycharm设置为Python环境

    在pycharm设置为Python环境1 找到 python 解释器路径 win R 输入 cmd 输入 wherepython 查找 python 安装路径有两个路径 要选择哪个呢 可以查看路径的文件 然后对比一下 路径中含有如下图内容的就是所需要的路径 2 在 Pycharm 里面设置 python 解释器找到设置最后点击 OK 确定就可以了

    2026年3月27日
    2
  • Linux查看网卡带宽[通俗易懂]

    Linux查看网卡带宽[通俗易懂]ifconfig查看网卡信息执行命令:ethtool网卡名称,例:ethtooleth1输出内容如下:Settingsforeth1:Supportedports:[FIBRE]Supportedlinkmodes:1000baseT/Full10000baseT/FullSupportedpauseframeuse:Symmetr..

    2022年10月19日
    4
  • Stata16 安装(初见stata)

    Stata16 安装(初见stata)stata16MP 安装教程

    2026年3月26日
    1
  • 基于matlab的机械臂仿真_移动机器人matlab运动学仿真

    基于matlab的机械臂仿真_移动机器人matlab运动学仿真目的  本文手把手教你如何在Mathematica软件中搭建机械臂的三维仿真环境,包括以下几部分:  1. 如何导入机械臂的三维模型;  2. 如何进行(正/逆)运动学仿真;  3. 如何进行(正/逆)动力学仿真;  4. 如何进行碰撞检测;  5. 如何进行控制方法的验证;  先看一下效果(先尝后买):  对于机器人研发设计人员,一款好用的仿真软件能对他的

    2022年10月20日
    5
  • OpenClaw 在 Mac 上的完整安装指南

    OpenClaw 在 Mac 上的完整安装指南

    2026年3月13日
    2
  • 【java】Comparator的用法

    【java】Comparator的用法为什么写 1 comparator 是 javase 中的接口 位于 java util 包下 javase 中的所有接口抽象度都很高 有必要重视 2 网上太多的文章告诉大家 comparator 是用来排序 确实 可以用来排序 但不仅限于排序 3 工作中实际需求出现很多需要使用 comparator 去处理的问题 在此总结一下

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号