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


    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;
        }
    }
    All that work will definitely pay off
  • 相关阅读:
    HDU 1162 Eddy's picture (最小生成树)(java版)
    codeforces 735D Taxes(数论)
    codeforces 735C Tennis Championship(贪心+递推)
    codeforces 2B The least round way(DP+数学)
    codeforces 2A Winner (好好学习英语)
    codeforces 632C The Smallest String Concatenation
    codeforces 803D Magazine Ad(二分+贪心)
    codeforces 803C Maximal GCD(GCD数学)
    codeforces 803B Distances to Zero
    STL容器之优先队列(转)
  • 原文地址:https://www.cnblogs.com/afangfang/p/12631477.html
Copyright © 2020-2023  润新知