Callable 与 Runable 使用心得

来源:互联网 发布:应急数据采集更新制度 编辑:程序博客网 时间:2024/06/04 19:13
介绍:
自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
0 0
原创粉丝点击