zoukankan      html  css  js  c++  java
  • java futureTask的使用

    futureTask 它的意义在于去除主函数的等待时间,使得主函数在执行耗时操作时无需死等,只需要在未来task执行完毕,再获取结果。

    下面的 futureTask 的一个简单例子。

    public class RealData implements Callable<String> {
        protected String data;
    
        public RealData(String data) {
            this.data = data;
        }
    
    
        public String call() throws Exception {
            //利用sleep方法来表示真是业务是非常缓慢的
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return data;
        }
    }
    

      

    public class Application {
        public static void main(String[] args) throws Exception {
            FutureTask<String> futureTask =
                    new FutureTask<String>(new RealData("name"));
    
            ExecutorService executor =
                    Executors.newFixedThreadPool(1); //使用线程池
    
            //执行FutureTask,相当于上例中的client.request("name")发送请求
            executor.submit(futureTask);
            //这里可以用一个sleep代替对其他业务逻辑的处理
            //在处理这些业务逻辑过程中,RealData也正在创建,从而充分了利用等待时间
            Thread.sleep(2000);
            //使用真实数据
            //如果call()没有执行完成依然会等待
            System.out.println("数据=" + futureTask.get());
        }
    }
    

      

  • 相关阅读:
    社保系列10《返回值速查表》
    社保系列7《PSAM卡》
    EMVTag系列11《电子现金发卡行授权码》
    EMVTag系列10《发卡行公钥证书》
    EMVTag系列8《IC卡公钥证书》
    EMVTag系列5《8E 持卡人验证方法(CVM)列表》
    康托展开
    A*搜索 概念
    code1225 搭积木
    code1064 虫食算
  • 原文地址:https://www.cnblogs.com/zhangjwcode/p/7646164.html
Copyright © 2011-2022 走看看