概述
虚拟线程(Virtual Thread)是一种用户态轻量级线程,它在Project Loom中孵化了很久,最早以预览特性的形式出现在Java 19中。它的实现基于协程(Coroutine)的概念,而协程是一种轻量级的线程模型,在一个传统的Java线程内可以运行多个虚拟线程,每个虚拟线程都有自己的执行上下文。虚拟线程的引入旨在解决传统线程的一些问题,比如:线程创建和上下文切换的成本过高等。
创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象,因为基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式的关注点是如何创建对象,其核心思想是要把对象的创建和使用相分离。
创建型模式旨在将系统与它的对象创建、结合、表示的方式分离。这些设计模式在对象创建的类型、主体、方式、时间等方面提高了系统的灵活性。
创建型模式由两个主导思想构成:一是将系统使用的具体类封装起来,二是隐藏这些具体类的实例创建的方式。创建型模式又分为对象创建型模式和类创建型模式。对象创建型模式处理对象的创建,类创建型模式处理类的创建。详细地说,对象创建型模式把对象创建的一部分推迟到另一个对象中,而类创建型模式将它对象的创建推迟到子类中。
虽然Groovy 3 Alpha版本就已经支持Java 8的Lambda、Method Reference以及Constructor Reference全部语法,但从bytecode层面来看,其本质上依然是Closure及Method Pointer,换言之,只是语法上的兼容,但性能上并没有提升。而Groovy的性能常为人诟病,所以Groovy 2引入了静态编译,其编译出来的bytecode跟Java的相近,所以其性能逼近Java。为了延续静态编译的性能优势,Groovy核心团队决定在Groovy 3 Beta版本中实现Lambda、Method Reference以及Constructor Reference的Native版本,其语法不变,但生成的bytecode与Java的相似,这便是”Native”的由来。