zoukankan      html  css  js  c++  java
  • 创建执行线程方式三:实现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
  • 相关阅读:
    网络协议 7
    网络协议 6
    PHP 扩展管理
    网络协议 5
    什么是DevOps?
    C# Web API Modify Post Data Size Limit
    Redis 数据变化通知服务实践
    .net 相关性能计数器丢失问题解决方案
    为什么要DevOps?
    分布式服务发现的几种模型
  • 原文地址:https://www.cnblogs.com/afangfang/p/12631477.html
Copyright © 2011-2022 走看看