• 多线程2


    Future 接口对于具体的Runnable 或者 Callable 任务的执行结果进行取消、查询是否完成、获取结果。 get() 方法获取结果会产生阻塞,会一直等到任务执行完毕才返回。  V get(long timeout, TimeUnit unit) 获取执行结果,如果在指定的时间内,没有获取到结果,则返回null。

    Future 提供三种功能: 判断任务是否完成、能够中断任务、能够获取任务执行结果。

    FutureTask 类 继承 Runnable和 Future 接口。所以它既可以作为Runnable 被线程执行,又可以作为Future 得到Callable 的返回值。

    package fork.task;
    
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.FutureTask;
    
    /**  
    * <p>Description:TODO </p>  
    * @author zhoudingzhao  
    * @date 2019年4月8日  下午2:01:16
    * @version 1.0  
    */
    public class FutureTaskDemo {
    	public static void main(String[] args) throws InterruptedException, ExecutionException {
    		SonTask task1 = new SonTask("Thread son1");
    		FutureTask<String> f1 = new FutureTask<String>(task1);               //传入 Callable 参数,FutureTask 实例的 get() 结果是 Callable 的返回结果。
    new Thread(f1).start(); FutureTask<Integer> f2 = new FutureTask<Integer>(new MyRun(),22); // 传入 Runnable 参数,则 第二个参数就是 FutureTask 实例的 get() 结果。 new Thread(f2).start(); System.out.println(f1.get()); System.out.println("result_" + f2.get()); } } class SonTask implements Callable<String> { private String name = ""; SonTask(String name) { this.name = name; } public String call() throws Exception { Thread.sleep(1000L); System.out.println(name + "任务计算完成"); return "result_11"; } } class MyRun implements Runnable { public void run() { try { Thread.sleep(10L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("特定线程2完成"); } }

      输出:

    特定线程2完成  
    Thread son1任务计算完成
    result_11
    result_22

    在 f1 和 f2 先后start 执行的情况下, f2 只 sleep 了 10毫秒, 所以先打印 特定线程2完成   ,但是 由于在  f2.get() 之前 先执行 了  f1.get() , 因此需要等待  f1 执行完成。 再输出  f2.get() .

  • 相关阅读:
    遥控器油门摇杆电位器封装尺寸图
    Microhard P900 900MHz跳频电台核心模块
    航路点
    当电桥为恒流源时惠斯通电桥电压的计算方法
    曲轴位置传感器
    16种发动机动态工作原理图,神奇的帅呆了!
    ffmpeg mediacodec 硬解初探
    ffmpeg编码常见问题排查方法
    阿里云 访问控制RAM
    WannaCry勒索病毒处理指南
  • 原文地址:https://www.cnblogs.com/z360519549/p/10670352.html
Copyright © 2020-2023  润新知