Callable 与 Runable 使用心得

介绍:
自JDK1.5以后,Java提供了Callable接口来增强并发编程,用来解决Runable的不足。在这之前,我们如果想实现多线程,一般情况下会使用继承Thread类或实现Runable接口两种方式。但是一直以来,获取返回值一直是一个大问题。通常需要编写大量无关紧要的代码。
Callable与Runable的区别:
1. Callable 使用 call方法,而Runable使用run方法
2. Callable 具有返回值,而Runable没有返回值
 
3. Callable的call方法可抛出异常,而Runnable的run方法不能抛出异常

 用法:
1. Thead复写类:
public class TestThread implements Callable<String> {
    @Override
    public String call() throws Exception {
        return "Hello, World!";
    }
}
这里的Callable是泛型的,其中可以指定其返回类型。比如这里的返回类型为String

2. 调用
public class Tester {
    public static void main(String[] args) throws InterruptedException, ExecutionException { 
        long beginTime = System.currentTimeMillis();
        // 创建一个线程池
        ExecutorService pool = Executors.newFixedThreadPool(1);
        // 创建一个有返回值的任务
        Callable c1 = new TestThread();
        // 执行任务并获取Future对象
        Future f1 = pool.submit(c1);
        // 从Future对象上获取任务的返回值,并输出到控制台
        System.out.println(">>>" + f1.get());
        // 关闭线程池
        pool.shutdown();
        long endTime = System.currentTimeMillis();
        System.out.println("time:" + (endTime - beginTime));
     }
}
一直以来困扰我多线程取值的问题终于解决了,开心~
更多技术文章请关注微信公众号:zssorin,记住我的QQ:2392119885
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值