• java.util.FutureTask<V>整理


     FutureTask 是一个泛型类,实现了java.util.concurrent.RunnableFuture 接口,该RunnableFuture 接口继承了java.util.concurrent.Future 接口与java.lang.Runnable接口。
        因此,首先FutureTask 类的实例是一个Runnalbe实例,可作为target参数传入Thread(target)构造器。通过调用Thread类的start()成员方法,可使一个新线程处于就绪状态。新线程获取CPU资源后,转变为运行状态时,此时target实例的run()方法会被调用。在此例中,即FutureTask 的实例中的run()方法会被调用。
        FutureTask 中有成员变量 c,c为Callable 接口的引用,此Callable 引用通过FutureTask 的构造函数获得,同时该类中也有成员变量 outcome, outcome为V的引用。在run()方法中,调用了c 的call()方法,该方法为真正的运算执行体,call()方法返回类型为V。如果线程执行顺利,则会按照 run()-->call()的调用顺序,调用Callable 对象的call()方法,并将call方法返回的结果存储于FutureTask 实例的outcome成员变量中。
        FutureTask 同时提供了成员方法get(),以获取线程执行后的返回结果outcome。FutureTask 中的所有操作都是线程安全的,该类有7个final 静态整型变量,分别为NEW, COMPLETING, NORMAL, EXCEPTIONAL, CANCELLED, INTERRUPTING, INTERRUPTED,数值从0到6,用于标识线程的运行状态。只有当状态为NORMAL时,实例才可以通过get()方法获取线程执行结果。
  • 相关阅读:
    支持stl容器的gdb自定义命令
    Thrift辅助类,用于简化Thrift编程
    Linux上获取CPU Core个数的实现
    第54课 被遗弃的多重继承(下)
    第53课 被遗弃的多重继承(上)
    第52课 C++中的抽象类和接口
    第51课 C++对象模型分析(下)
    第50课 C++对象模型分析(上)
    第49课 多态的概念和意义
    第48课 同名覆盖引发的问题
  • 原文地址:https://www.cnblogs.com/nomorewzx/p/4708643.html
Copyright © 2020-2023  润新知