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;
    }
 
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux中ll排序命令,ll命令

    linux中ll排序命令,ll命令-a列出目录下所有的文件,包括.开头的隐藏文件-A列出目录下所有的文件,不包括.开头的隐藏文件-c配合-lt:根据ctime排序及显示ctime(文件状态最后更改的时间)配合-l:显示ctime但根据名称排序否则:根据ctime排序-C每栏由上至下列出项目–color[=WHEN]控制是否使用色彩分辨文件。WHEN可以是‘never‘、‘always‘或‘auto‘…

  • RGBD相机总结_光圈快门iso

    RGBD相机总结_光圈快门iso对深度相机进行总结,方便不断补充。

  • docker(6)镜像的使用

    docker(6)镜像的使用前言Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似我们可以把镜像看作类,把容器看作类实例化后的对象。|

  • 计算机房空调设计规范,空调机房防火设计规范「建议收藏」

    计算机房空调设计规范,空调机房防火设计规范「建议收藏」浏览数:1153空调机房设计干货来一批  1.1机房位置及技术要求  1.1.1机房位置的选择与组成  1.机房的位置选择  离心式、螺杆式制冷机组的机房按功能分有两类:一类是为建筑物空调服务的冷冻机房,提供空调用的低温冷冻水,常采用冷水机组直接供冷或蓄冷槽与制冷机组组合供冷的方法;另一类是为冷藏、冷冻服务的制冷机房,常采用螺杆式制冷机组。冷冻机房位置的合理选择,对于整个建筑物的合理…

  • SQL Server中的锁的简单学习

    SQL Server中的锁的简单学习

    2021年11月25日
  • canvas rotate方法

    canvas rotate方法接上一篇图片上传功能中的ios下横屏拍的图片,最终上传却变成了竖向的解决方法。理解canvas的rotate,得先了解几个概念varc=document.getElementById("myCanvas");varctx=c.getContext("2d");ctx.fillRect(0,0,50,100);1、rotate的圆心是canvas的00位置2、将canvas…

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

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