• java基础——实现Callable接口创建线程


    package callable;
    
    /*
    创建线程方式三:实现Callable接口
    
    1.创建一个实现Callable的实现类
    2.实现call方法,将此线程需要执行的操作声明在次方法中
    3.创建Callable接口实现类的对象
    4.将此对象作为参数丢到FutureTask构造器中,创建FutureTask对象
    5.将FutureTask对象作为对象传递到Thread构造器中,创建Thread对象,start()
    6.如果需要方法的返回值,则用futureTask.get()方法去获取
    
    理解:
        1.call()可以有返回值
        2.call()可以抛出异常,被外面的操作捕获,获取异常信息
        3.Callable支持泛型
    
    @author zsben
    @create 2020-01-05 14:31
    */
    
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    
    class NumThread implements Callable{
    
        @Override
        public Object call() throws Exception {
            int sum=0;
            for(int i=2;i<=100;i+=2) {
                System.out.println(i);
                sum+=i;
            }
            return sum;//自动装箱了
        }
    }
    
    
    public class CallableTest {
        public static void main(String[] args) {
            NumThread numThread = new NumThread();
    
            FutureTask futureTask = new FutureTask(numThread);
            new Thread(futureTask).start();//futureTask实现了Runnable接口,启动线程启动call()
    
            try {
                //get()返回值即为FutureTask构造器参数Callable实现类重写的call()的返回值
                Object sum = futureTask.get();
                System.out.println(sum);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
    
        }
    }
  • 相关阅读:
    算法提高 身份证号码升级
    枚举排列
    排列数
    算法训练 K好数
    算法训练 前缀表达式
    算法训练 区间k大数查询
    最大最小公倍数
    Anagrams问题
    Uiautomator 2.0
    Uiautomator 2.0
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12153099.html
Copyright © 2020-2023  润新知