zoukankan      html  css  js  c++  java
  • Future模式

    Future模式核心思想是异步调用。我们可以先拿到调用的凭证,让方法先返回,让他在后台慢慢的处理这个请求。通过这个可以实现异步操作。

    JDK经准备好了一套完美的实现方式。我们用于执行的异步线程需要继承Callable接口,相当于Runnable,Callable接口中有一个方法call(),相当于run(),在里面写自己的业务。把这个线程放在futureTask中,这个相当于凭证。把futureTask交给线程池来进行异步处理,我们可以通过futureTask中的get()方法返回结果,结果没有返回会阻塞。

    具体实现:

    package jdkFuture;
    
    import java.util.concurrent.Callable;
    
    public class ReaLData implements Callable<String>{
        private String para;
        public ReaLData(String para){
            this.para = para;
        }
        @Override
        public String call() throws Exception {
            StringBuffer sb = new StringBuffer();
            for(int i = 0;i < 10;i ++){
                sb.append(para);
                try{
                    Thread.sleep(100);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
            return sb.toString();
        }
        
    }
    package jdkFuture;
    
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.FutureTask;
    
    public class FutureMain {
        public static void main(String[] args) {
            FutureTask<String> future = new FutureTask<String>(new ReaLData("a"));
            ExecutorService executor = Executors.newFixedThreadPool(1);
            executor.submit(future);
            System.out.println("请求完毕");
            while(true){
                try {
                    System.out.println("数据= " + future.get());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (ExecutionException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    ubuntu上部署ceph集群
    Ceph介绍及原理架构分享
    搭建家庭 NAS 服务器
    Android让屏幕保持常亮,不熄屏的三种方法
    IP流 TS流 PS流之间的关系及区别
    【WPF】Command 自定义命令
    WPF的路由事件、冒泡事件、隧道事件(预览事件)
    WPF之路路由事件
    c# string按指时间格式转化成datetim
    WPF样式(Style)入门
  • 原文地址:https://www.cnblogs.com/caobojia/p/6844540.html
Copyright © 2011-2022 走看看