Solon for JDK 21,虚拟线程逆天!!!

2023-10-06 00:39
文章标签 jdk 线程 21 虚拟 solon 逆天

本文主要是介绍Solon for JDK 21,虚拟线程逆天!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本次发布的其中一个重点:完成 JDK21 编译测试和功能单元测试。

JDK 21 虚拟线程?

在IO密集型项目中,效果很猛!有一种:天哪天哪天哪。。。的感觉

@SolonMain
public class App {public static void main(String[] args) {Solon.start(App.class, args, app->{app.onEvent(HttpServerConfigure.class, e->{e.setExecutor(Executors.newVirtualThreadPerTaskExecutor());});});}
}

Solon 是什么框架?

Java 生态级应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模)。与其他框架相比,解决了两个重要的痛点:启动慢,费内存

解决痛点?

由于Solon Bean容器的独特设计,不会因为扩展依赖变多而启动很慢(开发调试时,省时、爽快)!以知名开源项目“小诺”为例:

  • “snowy-spring 版” 启动 15-50秒
  • “snowy-solon 版” 启动3-5秒,启动内存节省1/3(有兴趣的,欢迎拉取代码体验)

有什么可爱的特点?

  • 启动快 5 ~ 10 倍。 (更快)
  • qps 高 2~ 3 倍。 (更高)
  • 运行时内存节省 1/3 ~ 1/2。 (更少)
  • 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小)
  • 同时支持 jdk8, jdk11, jdk17, jdk21, graalvm native image

入门探索视频(用户录制):

最近更新了什么?

  • 完成 JDK21 编译测试,功能单元测试
  • 添加 HttpServerConfigure::setExecutor 接口,用于支持虚拟线程池(for JDK21)
  • 添加 PropUtil 类。把原来的属性表达式与模板解析独立出来
  • 添加 ContextPathListener 类,用于控制 contentPath 对 ws,tpc 的影响
  • 添加 ContextPathFilter 一个简化的构造函数
  • 添加 MethodHolder::getDeclaringClz、getDeclaringClzAnnotation 接口
  • 添加 yaml 多片段支持(即一文件多环境支持)
  • 添加 多配置文件交差引用变量支持
  • 添加 DownloadedFile(file,name) 构造函数
  • 添加 Router 对 405 的支持
  • 调整 RunUtil 执行器分离为 parallelExecutor + asyncExecutor(for JDK21)
  • 调整 CacheService 接口(增加类型化 get)
  • 调整 SessionState 接口(增加类型化 get)
  • 调整 Context::session 接口(增加类型化 get)
  • 调整 BeanWrap 的 rawSet 改为公有
  • 调整 SolonApp::enableWebSocketMvc, enableSocketMvc, 默认为 false
  • 调整 SolonApp::enableWebSocket, enableWebSocketD 分离设置,各不相关
  • 调整 CloudConfig 复用主框架的属性表达式与模板解析
  • 调整 Listener 去掉 @FunctionalInterface,所有方法标为 default
  • 调整 ChainManager::postResult 的执行策略改为包围式(相当于倒序)
  • 调整 ValHolder 标为弃用
  • 调整 jdkhttp,jlhttp,smarthttp 的 contentLength 适配处理
  • 调整 使用更多的 slf4j 替换 bus
  • 调整 mybatis-solon-plugin 的会话提交方式,修复二级缓存控制可能失效的问题
  • 调整 “solon.config.load” 支持按顺序加载
  • 调整 几个特定启动参数的处理方式。改与成 Solon.cfg() 同步,再统一从 Solon.cfg() 取值
  • 调整 启动参数与系统属性的同步时机
  • wood 升为 1.2.1
  • redisx 升为 1.5.0
  • mybatis-flex 升为 1.6.5
  • sqltoy 升为 5.2.66
  • polaris 升为 1.14.1
  • lombok 升为 1.18.28
  • slf4j 升为 2.0.9
  • lombok 升为 1.18.30(for JKD21)
  • asm 升为 9.5 (for JDK21)

项目仓库地址?

  • gitee:https://gitee.com/noear/solon
  • github:https://github.com/noear/solon

这篇关于Solon for JDK 21,虚拟线程逆天!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152404

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected