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


相关推荐

  • C#第七回:DialogResult

    C#第七回:DialogResult一直没太搞明白这个逻辑是什么意思,今天无意中看到个例子,终于小小的理解了一下。下面这段代码很好理解,//createanewdialog,andgetthevaluebyusingdialogResultDialogResultdialogResult=MessageBox.Show("是否要创建目录"+textBox1…

    2022年6月22日
    23
  • Java多线程设计模式:wait/notify机制

    Java多线程设计模式:wait/notify机制

    2021年5月6日
    119
  • cstring头文件都有什么函数_cstdlib是什么头文件

    cstring头文件都有什么函数_cstdlib是什么头文件cstring中包含许多字符数组的函数:strlen()函数:strlen函数可以得到字符数组中第一个\0前的字符的个数strcmp()函数:strcmp函数返回两个字符串大小的比较结果,比较原则是按字典序strcpy()函数:strcpy函数可以把一个字符串复制给另一个字符串strcat()函数:strcat()可以把一个字符串接到另一个字符串后面sscanf与sprintf用法:假设定义了一个字符数组str[100],如下:sscanf(str,”%d”,

    2022年9月13日
    0
  • Virus.Win32.Tc专杀方案[通俗易懂]

    Virus.Win32.Tc专杀方案[通俗易懂]Virus.Win32.Tc.bat恶意病毒专杀处理方案

    2022年7月25日
    6
  • 基于web的实验室设备管理系统难点_web信息管理系统

    基于web的实验室设备管理系统难点_web信息管理系统这里写自定义目录标题基于web的实验室设备管理系统新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入基于web的实验室设备管理系统使用SSM框架、新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标

    2022年10月13日
    1
  • Splay Tree的删除操作

    Splay Tree的删除操作

    2021年11月24日
    75

发表回复

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

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