码迷,mamicode.com
首页 > 编程语言 > 详细

创建执行线程方式三:实现Callable接口

时间:2020-04-04 14:52:55      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:无法   cat   call()   throws   线程   override   依赖   runnable   public   

Callable接口

① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口
② Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的。

     但是 Runnable 不会返 回结果,并且无法抛出经过检查的异常。
③ Callable 需要依赖FutureTask ,FutureTask 也可以用作闭 锁

TestCallable

package com.aff.juc;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/*1.创建执行线程的方式三:实现Callable接口,相较于实现Runable接口的方式,
      方法可有有返回值,并且可以跑出异常.
   2.执行Callable接口方式,需要FutureTask 实现类的支持,用于接收运算结果。
      FutureTask 是 Future 接口的实现类
   
*/
public class TestCallable {
    public static void main(String[] args) {
        ThreadDemo4 td4 = new ThreadDemo4();
        // 1.执行Callable方式,需要FutureTask实现类支持,用于接收计算结果
        FutureTask<Integer> result = new FutureTask<>(td4);
        new Thread(result).start();
        // 2.接收线程运算后的结果
        try {
            Integer sum = result.get();
            System.out.println(sum);
            System.out.println("-----------");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

/*
 * class ThreadDemo3 implements Runnable{
 * 
 * @Override public void run() { } }
 */

class ThreadDemo4 implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        int sum = 0;
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
            sum += i;
        }
        return sum;
    }
}

 

创建执行线程方式三:实现Callable接口

标签:无法   cat   call()   throws   线程   override   依赖   runnable   public   

原文地址:https://www.cnblogs.com/afangfang/p/12631477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!