/ 技术 / 1244浏览

Java 21 新特性

文章目录
  • switch 的模式匹配
  • 虚拟线程
  • switch 的模式匹配

    Java21中的switch 表达式和语句,允许在 case 标签中使用模式。当模式匹配时,执行 case 标签对应的代码。可以针对多个模式测试表达式,每个模式都有一个特定的操作,从而可以简洁、安全地表达复杂的面向数据的查询。

    public class SwitchTest {
        public static void main(String[] args) {
            String r1 = formatterPatternSwitch(Integer.valueOf(1));
            String r2 = formatterPatternSwitch(new String("www.lalkk.com"));
            String r3 = formatterPatternSwitch(Double.valueOf(3.14D));
            System.out.println(r1);
            System.out.println(r2);
            System.out.println(r3);
    
        }
    
        static String formatterPatternSwitch(Object obj) {
            return switch (obj) {
                case Integer i -> String.format("int %d", i);
                case Long l -> String.format("long %d", l);
                case Double d -> String.format("double %f", d);
                case String s -> String.format("String %s", s);
                default -> obj.toString();
            };
    
            
        }
    
    }

    虚拟线程

    虚拟线程 (Virtual Threads) 是 Java 21 的一个重大更新,虚拟线程是由JDK实现的轻量级线程,多个虚拟线程可以共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。

    为什么要用虚拟线程呢?因为Java程序在基于系统线程的并发模型中,创建线程和销毁线程,在线程之间切换的开销很大,限制的Java程序处理大规模并发时的性能和扩展性。还有操作系统的线程是有有限的,程序在大量创建线程时线程资源可能会耗尽,导致性能问题。Java21正式使用虚拟线程,可以提供更高的性能,使用更低的资源,且有更好的伸缩性。虚拟线程属于非常轻量级的资源,在使用时创建,用完就扔,不需要池化虚拟线程。

    创建虚拟线程并运行的简单实例

    Thread vt = Thread.startVirtualThread(() -> {
        System.out.println("Start virtual thread...");
        Thread.sleep(10);
        System.out.println("End virtual thread.");
    });

    注意:使用虚拟线程创建大量线程仍然会导致线程资源耗尽。

     

    这里荒芜寸草不生 后来你来这走了一遭 奇迹般万物生长 这里是我的心

    0

    1. This post has no comment yet

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注