Java性能提升的其他技巧

Java性能提升的其他技巧

虚拟线程

Java 19 引入的一种轻量级线程,即 虚拟线程(Virtual Thread),并在 Java 21 中正式 GA。

虚拟线程是 Java 21 引入的一个新特性,用于简化并发编程。它与传统的操作系统线程相比,具有显著的优势:

  1. 轻量级:虚拟线程由 JVM 管理,而非操作系统,因此它们的内存占用和创建成本远低于传统线程。理论上,你可以轻松创建数十万甚至更多的虚拟线程。
  2. 高并发性:虚拟线程能处理更高并发的场景,特别是 I/O 密集型的应用,适合开发高并发、响应式的应用程序。
  3. 自动管理:无需手动管理线程池,JVM 会根据负载自动调整虚拟线程的调度,简化了并发编程的复杂性。
//创建虚拟线程
Thread virtualThread = Thread.ofVirtual().start(() -> {    System.out.println("虚拟线程正在运行");});System.out.println("主线程正在运行");
//虚拟线程的延迟启动
Thread virtualThread = Thread.ofVirtual()    .name("虚拟线程")    .unstarted(() -> System.out.println("虚拟线程运行中"));
virtualThread.start();
// 等待虚拟线程完成
virtualThread.join(); 

Spring boot 3.x启动虚拟线程

application.properties或application.yml

# 启用 虚拟线程
spring.threads.virtual.enabled=true
# 启用性能监控工具
management.endpoints.web.exposure.include=health,info,metrics

除了虚拟线程,Java 还有一些其他的性能提升技巧,尤其适用于 Spring Boot 高并发场景:

并行流(Java 8 Stream流)

使用并行流:对于 CPU 密集型任务,可以使用并行流(parallelStream())来利用多核 CPU,提高处理速度。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);numbers.parallelStream().forEach(number -> {    System.out.println(number * 2);});

异步编程(Java 8 异步编程)

异步编程与CompletableFuture:对于 I/O 密集型任务,可以使用 CompletableFuture 进行异步处理,减少线程阻塞,提高响应性能。

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {    // 异步执行任务    System.out.println("异步任务完成");});future.join();  // 等待任务完成

巧夺天工

优化数据库查询

优化数据库查询:减少数据库查询的次数,使用缓存(如 Redis)来存储频繁查询的数据,减少不必要的 I/O 操作。或性能利器Caffeine缓存

内存管理优化

内存管理优化:通过使用对象池(如 Apache Commons Pool)来管理资源,减少频繁的对象创建和销毁,提高内存使用效率。

Web容器

替换Spring Boot 内置Tomcat数据库为 采用 Undertow 基于 XNIO 的高性能容器

posted @   李好秀  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示