jdk21新特性详解使用总结

news2025/4/25 23:18:17

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.coloradmin.cn/o/2327109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实用技巧】电脑重装后的Office下载和设置

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言下载设置总结互动致谢参考目录导航 前言 在数字化办公时代&#xff0c;Windows和…

206. 反转链表 92. 反转链表 II 25. K 个一组翻转链表

leetcode Hot 100系列 文章目录 一、翻转链表二、反转链表 II三、K 个一组翻转链表总结 一、翻转链表 建立pre为空&#xff0c;建立cur为head&#xff0c;开始循环&#xff1a;先保存cur的next的值&#xff0c;再将cur的next置为pre&#xff0c;将pre前进到cur的位置&#xf…

离线语音识别 ( 小语种国家都支持)可定制词组

1产品介绍 离线语音模组采用神经网络算法&#xff0c;支持语音识别、自学习等功能。运用此模组将 AI 技 术赋能产品&#xff0c;升级改造出语音操控的智能硬件 ( 例如风扇、台灯、空调、马桶、按摩椅、运 动相机、行车记录仪等 ) 。支持全球多种语言识别&#xff0c;如中文…

网络华为HCIA+HCIP 策略路由,双点双向

目录 路由策略&#xff0c;策略路由 策略路由优势 策略路由分类 接口策略路由 双点双向 双点双向路由引入特点: 联系 路由回灌和环路问题 路由策略&#xff0c;策略路由 路由策略:是对路由条目进行控制&#xff0c;通过控制路由条目影响报文的转发路径&#xff0c;即路…

【TI MSPM0】ADC DAC学习

一、样例展示 通过ADC0触发单次采样&#xff0c;如果采样结果大于0.5倍的VDD&#xff0c;就点亮LED 否则熄灭LED 编译加载运行这个历程&#xff0c;提供一个电压到A0_2引脚上,电压范围在0-VCC之间同时观察LED1.在上电后&#xff0c;默认将ADC配置到正确的引脚模式&#xff0c;…

Cesium系列:从入门到实践,打造属于你的3D地球应用

一、Cesium简介 CesiumJS 是一个开源的 JavaScript 库&#xff0c;它能够帮助开发者创建出具有卓越性能、高精度、出色视觉质量和易用性的世界级 3D 地球仪和地图。无论是在航空航天领域&#xff0c;用于模拟飞行路径和展示卫星数据&#xff1b;还是在智能城市中&#xff0c;用…

Linux系统程序设计:从入门到高级Day01

知识点1 【系统调用】 系统调用的概述 系统调用&#xff1a;内核 提供给 用户 可以 操作内核 的一组函数接口 关系&#xff1a;用户 借助 系统调用 操作内核 进程的空间分为&#xff1a;内核空间 和 用户空间 用户一般都是在用户空间操作的&#xff0c;但是有的时候用户需要…

openEuler24.03 LTS下安装HBase集群

前提条件 安装好Hadoop完全分布式集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装Hadoop3完全分布式 安装好ZooKeeper集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装ZooKeeper集群 HBase集群规划 node2node3node4MasterBackup MasterRegionServ…

关于testng.xml无法找到类的问题

问题&#xff1a;testng.xml添加测试类的时候飘红 解决办法&#xff1a; 1.试图通过自动生成testng.xml插件去解决&#xff0c;感觉也不是这个问题&#xff0c;没有尝试&#xff1b; 2.以为是创建包的方式不对&#xff0c;重新删除后新建--还是找不到 想新建类的时候发现从m…

数据结构:探秘AVL树

本节重点 理解AVL树的概念掌握AVL树正确的插入方法利用_parent指针正确更新平衡因子掌握并理解四种旋转方式&#xff1a;左单旋&#xff0c;右单旋&#xff0c;左右双旋&#xff0c;右左双旋 一、AVL树的概念 AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&…

Linux 入门:基础开发工具(上)vim,gcc/g++,make/makefile

目录 一.软件包管理器 一&#xff09;.软件包 二&#xff09;.安装软件 三&#xff09;.删除软件 二.编辑器vim 一&#xff09;.vim的基本介绍 1.正常/普通/命令模式(Normal mode) 2.插入模式(Insert mode) 3.底行模式(last line mode) 二&#xff09;.vim的基本操作 …

5、无线通信基站的FPGA实现架构

基站&#xff08;Base Station&#xff0c;BS&#xff09;&#xff0c;也称为公用移动通信基站&#xff0c;是无线电台站的一种形式&#xff0c;具体则指在一定的无线电覆盖区中&#xff0c;通过移动通信交换中心&#xff0c;与移动电话终端之间的信息传递的无线电收发信电台。…

Linux2 CD LL hostnamectl type mkdir dudo

查看主机名信息 设置静态主机名 同时配置静态、瞬时主机名 下载Vmware tools https://blog.csdn.net/qq_34638161/article/details/102779721 mkdir创建目录 问题&#xff1a;为什么在root目录下 看不到 /var /usr那些文件夹

Docker容器部署Java项目的自动化脚本(Shell编写)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Docker容器部署Java项目的自动化脚本&#x…

STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出

目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的&#xff1f; 问题1&#xff1a;如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2&#xff1a;哪些寄存器&#xff0c;去哪里找呢&#xff1f; 问题三&#xff0c;寄存器的含义&#xff…

UniApp集成极光推送详细教程

最近项目要集成推送服务&#xff0c;选型极光推送&#xff0c;记录一下开发过程。 1、极光官网注册登录 1.1选择极光推送产品&#xff0c;新建应用 1.2在下一步中选择Android/IOS的消息推送服务 1.3产品设置中输入应用包名&#xff08;一经输入后不可更改&#xff0c;一定要正…

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…

系统思考与时间管理

时间管理的真正秘诀&#xff1a;主动浪费时间&#xff1f; 巴菲特的私人飞机驾驶员觉得自己不够成功&#xff0c;于是向巴菲特请教应该怎么做。巴菲特让他列出了自己人生中最想实现的25个目标&#xff0c;并按重要程度排序&#xff0c;接着安排时间专注做前五件最重要的事情。…

mac air m系列arm架构芯片安装虚拟机 UTM+debian 浏览器firefox和chrome

成果展示&#xff1a;debian虚拟机&#xff0c;你值得拥有&#xff01; 预期结果 1、mac的m系列芯片&#xff0c;arm 架构且内存小&#xff0c;安装虚拟机。 考虑到mac m系列芯片8g内存&#xff0c;arm架构想安装一个轻量的虚拟机&#xff0c;偶然之间发现了debian&#xff0c…

Keepalived+LVS+nginx高可用架构

注明&#xff1a;所有软件已经下载好&#xff0c;防火墙和SELinux已经全部关闭 一.搭建NFS 1.服务端 1.创建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改权限 [rootnfs ~]# chmod orw /nfs/data 3、写配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…