Java通过Callable实现多线程

本文介绍了Java中Callable接口用于创建多线程的优势,它允许任务执行后返回结果。同时,结合Future接口可以跟踪异步计算的结果。通过FutureTask类,Callable能与Thread配合,启动多线程并获取执行结果。
摘要由CSDN通过智能技术生成

一、Callable接口定义

  • 从最传统的方法来讲如果要进行多线程的实现肯定依靠的就是Runnable,但是Runnable接口有一个缺点:当线程执行完毕后无法获取一个返回值,所以从JDK1.5之后就提出了一个新的线程实现接口:java.util.concurrent.Callable接口。

    Callable接口源码:

    @FunctionalInterface
    public interface Callable<V> {
         
        /**
         * Computes a result, or throws an exception if unable to do so.
         *
         * @return computed result
         * @throws Exception if unable to compute a result
         */
        V call() throws Exception;
    }
    
  • 优点:

    1. 可以获得任务执行返回值。
    2. 和Future结合,利用Future跟踪异步计算的结果。

二、Future接口

  • Future接口代表了一个异步计算的结果。
  • 通过get()方法得到结果。

三、Callable执行方式

  • 借助FutureTask类执行

    • FutureTask类同时实现了两个接口:Future以及Runnable接口。
    • 由于FutureTask类实现了Runnable接口,所以Thread和Callable就建立了联系,Callable可以借助FutureTask来调用Thread里面的start()方法来启动多线程程序。
  • 执行流程:

    // 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值