发布时间:2022-11-11 文章分类:编程知识 投稿人:李佳 字号: 默认 | | 超大 打印

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

前文链接

本篇概览

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

  1. 首先是最具体形象的:前面的代码中,如果要开启虚拟线程就用@RunOnVirtualThread注解去修饰方法,那么咱们首先就要弄明白这个@RunOnVirtualThread注解在代码运行的时候,起到了什么作用?
  2. 其次是本篇的核心:一个Executor对象的前世今生,今天的文章都会围绕它展开,它是虚拟线程的灵魂,所以本文的第二部分就先弄明白这个重要的Executor是怎么诞生的
  3. 最后,也就是最重要的:Executor对象是怎么工作的

关于quarkus源码

参数isDefaultBlocking,后面多处用到

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

@RunOnVirtualThread注解去哪了?

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

关于Executor

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

首先,VIRTUAL_EXECUTOR_SUPPLIER是什么

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

其次,RuntimeDeploymentManager#deploy方法里是什么?

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

这个特别的Executor对象应该怎么用?

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

  1. 咱们在web接口类上添加的@RunOnVirtualThread注解,会存入每个web接口方法对应的ResourceMethod对象中
  2. 应用在初始化的时候,检查web接口方法对应的ResourceMethod对象,如果需要在虚拟线程中响应,就给这个web接口绑定一个BlockingHandler对象,此对象有个成员变量,是个executor,是通过Executors.newVirtualThreadPerTaskExecutor()方法创建的
  3. web请求到达时,web接口方法的handler对象会被拿来执行其handler方法,BlockingHandler也是其中之一
  4. BlockingHandler的handler方法中,会使用executor.execute方法来执行web响应逻辑,此方法会创建创建虚拟线程,在虚拟线程中完成web响应

后面更精彩

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...