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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用proxy实现一个更优雅的vue

    用proxy实现一个更优雅的vue

    2021年6月7日
    93
  • mysql批量添加数据sql语句_sql insert into 批量

    mysql批量添加数据sql语句_sql insert into 批量在MySQL数据库中,如果要插入上百万级的记录,用普通的insertinto来操作非常不现实,速度慢人力成本高,推荐使用LoadData或存储过程来导入数据,我总结了一些方法分享如下,主要基于MyISAM和InnoDB引擎。1InnoDB存储引擎首先创建数据表(可选),如果有了略过:1>CREATEDATABASEecommerce;2>USEecommerce;3&…

    2022年10月5日
    7
  • 打印控件功能演示lodop_前端打印插件

    打印控件功能演示lodop_前端打印插件WEB打印控件Lodop技术手册目      录一、概述1二、系统文件1install_lodop32.exe和 install_lodop64.exe1LodopFuncs.js2三、控件参数6Caption6Color6Border6四、功能函数71、基本函数7VERSION7PRINT_INIT7SET_PRI…

    2025年9月16日
    8
  • Java零基础好学吗?Java该怎么学?

    Java零基础好学吗?Java该怎么学?Java零基础好学吗?Java该怎么学?在IT行业中,Java开发工程师是一个很吃香的职业,薪资水平也是几乎过万,许多人想转行Java开发,但又担心零基础能不能学会,学起来有多难,如果是零基础自学Java的话是比较困难的,学Java难不难取决于学习方法的选择和努力程度。今天就来讲讲Java零基础好学吗?Java该怎么学?Java学习路线:第一阶段:Java基础语法内容:运行环境、关键字、数据类型、运算符、方法、条件结构、循环结构、方法重载、数组。第二阶段:面向对象和封装内容:面向对象、thi

    2022年7月7日
    24
  • python 实现协程 提高效率

    python 实现协程 提高效率

    2021年11月11日
    47
  • Perl正则表达式详解[通俗易懂]

    Perl正则表达式详解[通俗易懂]Perl中的正则表达式使用示例m//修饰符LVALUE=~m/PATTERN/;LVALUE=~/PATTERN/;修饰符含义/i匹配时忽略大小写/g全局匹配,默认情况下,正则表达式”abc”匹配”abcdabc”字符串的时候,将之匹配左边的abc,使用g将匹配两个”abc”/c在开启g的情况下,如果匹配失败,将不重置搜索位置/m多行匹配模式/s让.可以匹配换行符”\n”,也就是说该修饰符让.真的可以匹配任意字符/x允许正则表达

    2022年5月31日
    49

发表回复

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

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