首页  

project loom 那些事     所属分类 java 浏览量 854
A thread in Java is just a small wrapper around a thread that is managed and scheduled by the OS. 
Project Loom adds a new type of thread to Java called a virtual thread, and these are managed and scheduled by the JVM.

虚拟线程和普通线程的区别在于,虚拟线程由java虚拟机调度,而普通线程是操作系统线程的包装
虚拟线程 交给carrier thread 也就是执行线程(普通线程)执行,
IO阻塞 虚拟线程,执行线程不会被阻塞 ,可以去执行其他 虚拟线程
在第一个版本中,loom并不提供用户层面的schedule方法,缺省使用fork&join pool,
先交给loom,由loom来调度具体的线程

Project Loom   实现基于 Continuation
Contiuation 表示一个可暂停和恢复的计算单元
java.lang.Continuation   供类库实现使用,应用开发一般不使用


Java15 发布 Project Loom 的第一个版本

2019年9月,Oracle 停止了异步JDBC标准的相关工作,
在Java平台上 , Project Loom 是未来的方向,而异步不是 ,
Oracle认为异步程序太难写难调,因此全力转向同步的方案

Reactive模型和Kotlin协程都在客户端代码和JVM线程之间添加了一个额外的抽象层。
框架/库的职责是动态地将一个映射到另一个。
问题的关键在于,JVM线程是OS线程的包装 ,OS线程创建起来很昂贵,并且数量限制在数千个之内。

Project Loom的目标是将JVM线程与OS线程解耦。其中一个想法是创建一个额外的抽象,称为Fiber

java15并没有引入新的Fiber类,而是重用了  java.lang.Thread
在新的JVM版本中,某些Thread对象可能是重量级的并映射到OS线程,而另一些对象可能是虚拟线程。

Project Looms将现有的Thread实现方式从OS线程的映射更改为可以表示此类线程或虚拟线程的抽象。

Java下一代高并发技术  虚拟线程(Virtual Threads)


JEP 425: Virtual Threads (Preview) https://openjdk.java.net/jeps/425 https://inside.java/2021/05/10/networking-io-with-virtual-threads/ https://www.davidvlijmincx.com/posts/create_virtual_threads_with_project_loom/ https://inside.java/2020/08/07/loom-performance/ https://blog.frankel.ch/project-loom-reactive-coroutines/ java Virtual Threads 虚拟线程 java 虚拟线程使用 networking io with virtual threads Java 异步编程

上一篇     下一篇
networking io with virtual threads

guice例子

java 虚拟线程使用

JDK18 特性

scala map 操作

HikariCP 使用及参数