Spring MVC异步处理-Future模式

作者: _挑灯看剑_ | 来源:发表于2016-11-23 15:50 被阅读224次

Furture模式

Future模式.png
  • 主线程开启一个子线程,子线程在处理一个非常耗时的任务,主线程就会立即返回一个Future对象。这个Future对象有一个成员变量result,子线程和主线程共享这个Future对象。
  • 如果主线程,在子线程没有处理业务之前调用Future.getResult方法,则会发生阻塞。而子线程处理业务完成之后,会执行Future.setResult方法,此时Future对象的锁属于子线程。子线程执行setResult完毕之后,则会释放锁,同时会通知刚才的等待的主线程。主线程重新获得锁,执行getResult方法。从而获取子线程执行的结果result。
  • 对于Future对象,只是一个代理真实数据的对象。而真实的数据为其成员变量result。子线程负责set真实数据,而主线程负责get真实数据。
  • 在java多线程编程中,使用Callable<T>接口实现任务的执行。
public class TestThread {    
      public static void main(String[] args){        
                  ExecutorService executorService = Executors.newFixedThreadPool(10); 
                  //开启一个子线程,立即返回       
                  Future<String> result = executorService.submit(new CustomTask()); 
                  //主线程阻塞,一直等待子线程返回真实的响应数据   
                  System.out.println(result.getResult());
                  executorService.shutdown();    
      }
}
class CustomTask implements Callable<String>{    
        public String call() throws Exception {        
                 Thread.sleep(10000);        
                 System.out.println(Thread.currentThread());        
                 return "complete task";    
            }
}

相关文章

  • Spring MVC异步处理-Future模式

    Furture模式 主线程开启一个子线程,子线程在处理一个非常耗时的任务,主线程就会立即返回一个Future对象。...

  • Java8 CompletableFuture指北

    一、JAVA 异步处理的演变 1.1 Future JDK 5引入了Future模式。Future模式是多线程设计...

  • 异步编程

    同步、异步、阻塞、非阻塞 Future JDK 5引入了Future模式。重点实现的是并发处理,异步阻塞 Futu...

  • Python怎么测试异步接口

    当业务处理比较耗时时, 接口一般会采用异步处理的方式, 这种异步处理的方式又叫Future模式. 一般流程当你请求...

  • Spring MVC异步处理-DeferedResult使用

    DeferedResult处理流程 Spring mvc的控制层接收用户的请求之后,如果要采用异步处理,那么就要返...

  • flutter之---Future的正确用法

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • flutter Future

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • SpringMVC之异步分析Callable,WebAsyncT

    1 SpringMVC异步 1.1 引言 spring mvc同步接口在请求处理过程中一直处于阻塞状态,而异步接口...

  • Spring Security 安全之路进阶(二)

    第一章 使用REST方式处理文件服务 文件上传 文件下载 第二章 Spring MVC 高级特性 1. 异步处理...

  • Java中的Future模式

    Future模式 核心思想是异步调用,在java中内置了对Future模式的实现,主要就是Future接口、Cal...

网友评论

    本文标题:Spring MVC异步处理-Future模式

    本文链接:https://www.haomeiwen.com/subject/qplvpttx.html