当前位置: 首页 > news >正文

泉州网站开发联系薇镇江个人网站建设

泉州网站开发联系薇,镇江个人网站建设,1688外贸订单网,建设网站开通网线多少钱虚拟线程(Virtual Thread)是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。 在引入虚拟线程…

虚拟线程(Virtual Thread)是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。

在引入虚拟线程之前,java.lang.Thread 包已经支持所谓的平台线程,也就是没有虚拟线程之前,我们一直使用的线程。JVM 调度程序通过平台线程(载体线程)来管理虚拟线程,一个平台线程可以在不同的时间执行不同的虚拟线程(多个虚拟线程挂载在一个平台线程上),当虚拟线程被阻塞或等待时,平台线程可以切换到执行另一个虚拟线程。

虚拟线程、平台线程和系统内核线程的关系图如下所示(图源:How to Use Java 19 Virtual Threads):

虚拟线程、平台线程和系统内核线程的关系

关于平台线程和系统内核线程的对应关系多提一点:在 Windows 和 Linux 等主流操作系统中,Java 线程采用的是一对一的线程模型,也就是一个平台线程对应一个系统内核线程。Solaris 系统是一个特例,HotSpot VM 在 Solaris 上支持多对多和一对一。具体可以参考 R 大的回答: JVM 中的线程模型是用户级的么?。

相比较于平台线程来说,虚拟线程是廉价且轻量级的,使用完后立即被销毁,因此它们不需要被重用或池化,每个任务可以有自己专属的虚拟线程来运行。虚拟线程暂停和恢复来实现线程之间的切换,避免了上下文切换的额外耗费,兼顾了多线程的优点,简化了高并发程序的复杂,可以有效减少编写、维护和观察高吞吐量并发应用程序的工作量。

虚拟线程在其他多线程语言中已经被证实是十分有用的,比如 Go 中的 Goroutine、Erlang 中的进程。

知乎有一个关于 Java 19 虚拟线程的讨论,感兴趣的可以去看看:https://www.zhihu.com/question/536743167 。

Java 虚拟线程的详细解读和原理可以看下面这几篇文章:

  • 虚拟线程极简入门(推荐)
  • Java19 正式 GA!看虚拟线程如何大幅提高系统吞吐量
  • 虚拟线程 - VirtualThread 源码透视

虚拟线程在 Java 19 中进行了第一次预览,由JEP 425提出。JDK 20 中是第二次预览,做了一些细微变化,这里就不细提了。

最后,我们来看一下四种创建虚拟线程的方法:

// 1、通过 Thread.ofVirtual() 创建
Runnable fn = () -> {// your code here
};Thread thread = Thread.ofVirtual(fn).start();// 2、通过 Thread.startVirtualThread() 、创建
Thread thread = Thread.startVirtualThread(() -> {// your code here
});// 3、通过 Executors.newVirtualThreadPerTaskExecutor() 创建
var executorService = Executors.newVirtualThreadPerTaskExecutor();executorService.submit(() -> {// your code here
});class CustomThread implements Runnable {@Overridepublic void run() {System.out.println("CustomThread run");}
}//4、通过 ThreadFactory 创建
CustomThread customThread = new CustomThread();
// 获取线程工厂类
ThreadFactory factory = Thread.ofVirtual().factory();
// 创建虚拟线程
Thread thread = factory.newThread(customThread);
// 启动线程
thread.start(); 

通过上述列举的 4 种创建虚拟线程的方式可以看出,官方为了降低虚拟线程的门槛,尽力复用原有的 Thread 线程类,这样可以平滑的过渡到虚拟线程的使用。

本文已收录今 JavaGuide (「Java学习 + 面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识)

http://www.sczhlp.com/news/149050/

相关文章:

  • ssh jsp做网站提供手机网站建设推荐
  • 网页设计的网网页设计的网站网页设计思路怎么写
  • 物业网站开发网站制作app软件
  • 商城网站公司做网站多少钱大概
  • 备案期间 需要关闭网站wordpress菜单美化
  • 网站开发毕设文献wordpress the_tags
  • 杭州做网站套餐沛县徐州网站开发
  • 淘宝客的api怎么做网站怎样制作手机视频教程
  • 简洁大气企业网站淄博网站制作方案
  • 个人网站炫酷主页html滕州网站建设
  • google网站排名查询wordpress 字段键
  • 重庆网站建设制作设计公司做网站必须要切图吗
  • 网站后台加密2022智慧树互联网与营销创新
  • 免费的网站域名查询565wcc大连外协机械加工网
  • 个人网站 cdn常用网站建设技术是什么意思
  • 找人做自建房图纸去哪个网站网站如何在google提交收录
  • 网站模板选择益阳市城乡和住房建设部网站
  • 廊坊网站建设价格wordpress底部悬浮导航
  • 苏州外贸公司网站建设流程图网站推广品牌
  • 新浪网站源代码桂林做旅游网站失败的网站
  • 自己建个网站需要多少钱wordpress 主题 单栏
  • 英语ppt模板免费下载 素材渭南网站建设网站排名优化
  • 校园设计网站聊城 网站建设
  • 西安 做网站 499网站下要加个备案号 怎么做
  • 江苏省建设工程招投标网站网站后台编辑器无法显示
  • 网站建设企业宣传册石家庄最好的网站建设公司哪家好
  • 织梦唯美网站源码装修网站建设优缺点
  • 如何制作自己的网站模版代做毕设要注册答疑网站
  • 房产做网站吸引wordpress免费汉化企业主题
  • 百度做个公司网站要多少钱微餐饮网站建设比较好