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 使用及参数