JUC(三)-----Callable

本文介绍了Java中Callable接口与FutureTask类的区别,重点在于Callable可以有返回值并能抛出异常,而FutureTask是用于包装Callable任务并提供结果获取的方法。通过示例代码展示了如何使用FutureTask启动Callable任务,并在主线程中阻塞获取任务结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

一.与Runnable的区别

1.可以有返回值,获取返回值时可能需要等待,会阻塞
2,可以抛出异常
3.方法不同,run/call
4.

二.代码测试:

public class CallableTest {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //怎么启动Callable---用futurTask来做中间类传递
        FutureTask<Integer> futureTask = new FutureTask<>(new MyThread());
        new Thread(futureTask).start();
        Integer integer = futureTask.get(); //这个get 方法可能会产生阻塞!把他放到 最后
        System.out.println(integer);

    }
}
class MyThread implements Callable<Integer>{

    @Override
    public Integer call() throws Exception {
        System.out.println("Call()");
        return 1024;
    }
}

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值