当前位置: 首页 > news >正文

jdk21新特性详解使用总结

jdk21新特性详解总结

1.StringBuilder和StringBuffer新增了一个repeat方法

  /**
     * Java 21的StringBuilder和StringBuffer新增了一个repeat方法
     */
    public static void repeatStr(){
        var sb=new StringBuilder().repeat("*",10);
        System.out.println(sb);

    }

运行结果如下:
在这里插入图片描述

2.Java 21增强对Emoji表情符号的处理了

  /**
     * Java 21增强对Emoji表情符号的处理了
     */
    public static  void emoji(){
        //用isEmoji方法来判断字符串中是否有表情
        String message = "欢迎来到 www.didispace.com ❤️,要不要来杯 ☕️ ?";
        if(message.codePoints().anyMatch(Character::isEmoji)) {
            System.out.println("Message has emoji");
        }
    }

运行结果如下:
在这里插入图片描述

3.Java 21新特性:Sequenced Collections(有序集合)

/**
     * Java 21新特性:Sequenced Collections(有序集合)
     *
     * Sequenced Collections引入了三个新接口:
     * SequencedCollection
     * SequencedMap
     * SequencedSet
     *
     * 第一个和最后一个元素的访问:对于对于List, Deque, Set这些有序的集合,访问方法变得统一起来:
     *
     * 第一个元素:collection.getFirst()
     * 最后一个元素:collection.getLast()
     */
    public static  void SeqCollections(){
        List<Integer> aa=new ArrayList<>();
        aa.add(99);
        aa.add(80);
        aa.add(48);
        System.out.println("aa.getFirst() = " + aa.getFirst());
        System.out.println("aa.getLast() = " + aa.getLast());


    }

运行结果如下:
在这里插入图片描述

4.虚拟线程&限流

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;


public class StringRepeat {
    // 定义限流并发的信号量,这里设置为:10
    private static final Semaphore POOL = new Semaphore(10);

      /**
     * jdk21 虚拟线程(Virtual Threads):
     * 1.来简化和增强并发性;
     * 2.虚拟线程,也称为“用户模式线程(user-mode threads)”或“纤程(fibers)”
     *3.虚拟线程是轻量级的,意味着比传统线程创建更多数量,并且开销要少得多。
     * 使得在自己的线程中运行单独任务或请求变得更加实用,即使在高吞吐量的程序中
     *
     *
     */
    public static void virtualThreads(){
        //创建和使用虚线程的方法1.使用静态构建器方法
        Runnable runnable = () -> {
            System.out.println("Hello, hrha.com");
        };
        // 使用静态构建器方法
        //Thread virtualThread = Thread.startVirtualThread(runnable);

//        Thread.ofVirtual()
//                .name("space-virtual-thread")
//                .start(runnable);


        //创建和使用虚线程的方法2.与ExecutorService结合使用
        try (ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor()) {
            for (int i = 0; i < 100; i++) {
                executorService.submit(runnable);
            }
        }

    }

    /**
     * 虚拟线程的限流
     */
    public static void callOldService() {
        try{
            POOL.acquire(); // 尝试通过信号量获取执行许可
        } catch(InterruptedException e){
            // 执行许可获取失败的异常处理
        }


        try {
            // 获取到执行许可,这里是使用虚拟线程执行任务的逻辑
            Runnable runnable = () -> {
                System.out.println("Hello, 666ha.com");
            };
            Thread.ofVirtual()
                .name("space-virtual-thread")
                .start(runnable);

        } finally {
            // 释放信号量
            POOL.release();
        }
    }

    public static void main(String[] args) {
       virtualThreads();
        callOldService();

    }
}

运行结果如下:
在这里插入图片描述

http://www.dtcms.com/a/106885.html

相关文章:

  • TypeScript extends 全面解析
  • work02_1 计算这两个日期之间相隔的天数
  • 手机改了IP地址,定位位置会改变吗?
  • Java面试黄金宝典29
  • 蓝桥备赛指南(13):填空签到题(1-1)
  • 车辆控制解决方案
  • 如何通过安当TDE透明加密实现MySQL数据库加密与解密:应用免改造,字段与整库加密全解析
  • MySQL主从复制(四)
  • WEB安全--文件上传漏洞--其他绕过方式
  • OpenLayers:封装Overlay的方法
  • WASM I/O 2025 | MoonBit获Kotlin核心开发,Golem Cloud CEO高度评价
  • 人工智能赋能管理系统,如何实现智能化决策?
  • 操作系统(中断 异常 陷阱) ─── linux第28课
  • 脑影像分析软件推荐 | JuSpace
  • 【kubernetes】pod拉取镜像的策略
  • 关于SQL子查询的使用策略
  • ​自动化网络架构搜索(Neural Architecture Search,NAS)
  • RNN模型与NLP应用——(9/9)Self-Attention(自注意力机制)
  • 1Panel 面板 宝塔面板 Ubuntu 24.04
  • 叁仟数智指路机器人是否支持远程监控和管理?
  • Rclone同步Linux数据到google云盘
  • 【SQL】MySQL进阶3:Innodb引擎结构,事务与ACID的实现
  • Apifox Helper 与 Swagger3 区别
  • 一个服务器算分布式吗,分布式需要几个服务器
  • 电子企业MES管理系统智能排产与动态调度优化
  • 化工网平台API接口开发实战:从接入到数据解析‌
  • 递归(实践版)
  • 阿里云AI Studio 2.0:拖拽搭建企业级智能客服系统
  • 信息学奥赛一本通 1611:仓库建设 | 洛谷 P2120 [ZJOI2007] 仓库建设
  • Cribl 创建路线Route