JDK 18 最新动态和 JDK 19 新特性预测
JDK 18 最新动态和 JDK 19 新特性预测_语言 & 开发_Michael Redlich_InfoQ精选文章
里面提到文章 定界延续(delimited continuations)和尾调用, Why Continuations are Coming to Java
这篇文章非常棒,已经和我之前的想法非常接近了,贴几段 google 翻译的:
此类实现一次性多提示有限延续,但我们可以决定添加克隆它们的能力。如果我们克隆一个延续,我们可以捕获它的特定时间,然后我们运行它,我们会得到一些称为重入或多镜头延续的东西。这就是在这些一次性延续之上实现它们的简单程度,我们只需在每次运行时克隆延续并返回一个新副本。你可以用它来做一些疯狂的事情,你可以编写真正回到过去的程序,大多数人不需要,我不确定我们是否真的要实现它,但我们可以。
我们可以做的另一件更有趣的事情是,我们可以使这些延续可序列化,这意味着您可以编写一段计算块。假设您正在从数据库中读取某些内容,并且正在等待响应,而在等待期间,您实际上不仅会被 CPU 暂停,而且会完全脱离机器,当您返回并获取来自数据库的结果,您可以一起在不同的机器上,也许更接近数据所在的位置,这将使访问数据的速度更快。
在我们与架构师进行了这次对话后不久,我阅读了 Nathaniel J. Smith 的一篇非常有趣的博客文章,内容涉及一种叫做结构并发的东西。他将这个想法归功于 Martin Sústrik,这是您阅读博客文章并说“这绝对正确。这就是做事的方式”的罕见场合之一。
结构并发的主要思想是什么?这里的核心技巧是,不是以一种类似即发即弃的方式创建线程,而是创建一个线程并且该线程运行只要它想要并且你无法控制它。线程被限制在一个众所周知的生命周期中,该生命周期延伸到给定的代码块,我将向您展示一个示例。在目前的原型中因为没有更好的名字,我们只称它为光纤范围,名字可能会改变。我们有这个块定义了一个光纤范围,所有在范围内创建的光纤都保证在我们退出范围时终止。
这是如何运作的?当我们尝试在 Java 中退出该作用域时,有一个资源树会自动调用 Fiber 作用域上的 close 方法,并且会阻塞,直到在该块内创建的所有 Fiber 都终止。这给了我们一些很好的优势,例如,当您创建一个线程并且您忘记了它时,该线程可能会抛出异常并且没有人会处理。这样,因为您知道线程将在那里诞生并在块结束之前死亡,所以您可以捕获它的异常并处理它。您可以创建大量纤程,甚至可以嵌套这些范围以创建纤程树,并且只需取消范围即可取消所有纤程。
你可以用它做一些好事情,你可以编写一个方法来完成重新任务并希望并行启动球,但这就像一场比赛,你只想等待它第一次完成。Fiber 作用域为我们提供了终止队列,并且对于每个任务,我们都会产生一个新的 Fiber。这本质上是免费的,就像在 Java 中创建对象,然后我们将它们签名到终止队列,然后我们根据这个提示进行阻塞,我们首先获取第一个终止的光纤的结果,因为我们无法离开范围直到所有其他的都终止,一旦我们在 finally 块中有结果,我们取消所有剩余的纤维,然后我们可以离开范围。
我们可以做同样的事情,只需稍微改变一下。与其说光纤范围是可取消的,我们可以给它一个截止日期,并说我们只愿意等待任何线程的截止日期。如果其中一个线程在该截止日期前完成,那么我们很好。如果没有,那么光纤范围将自动取消所有这些。这使我们能够以一种非常好的方式编写有趣的东西。
当然,说归说,其实在 JVM 上做这些并不容易,比如说“延续的序列化”
参与者 5:你提到你有随用随用的内存占用。这是否意味着您必须加载已执行的堆栈才能继续执行,因为您无法继续调用转发?这是如何运作的?
Pressler:我会说话,你可以在我现在谈论实施时观看其他谈话。延续堆栈存储在两个 Java 数组中的 Java 堆中,我们确实来回复制它们,问题是如何快速完成。现在,我们有一个解决方案,允许我们只复制一帧,其余的则懒惰地复制。我们可以稍后讨论这个,或者你可以观看我们讨论实施的其他讨论。
很棒!期待早日推出!
JDK 18 最新动态和 JDK 19 新特性预测的更多相关文章
- Java JDK 1.5 1.6 1.7 新特性整理
Java JDK 1.5的新特性 1.泛型 List<String> strs = new ArrayList<String>();//给集合指定存入类型,上面这个集合在存入数 ...
- 说出 JDK 1.7 中的三个新特性?
虽然 JDK 1.7 不像 JDK 5 和 8 一样的大版本,但是,还是有很多新的特性, 如 try-with-resource 语句,这样你在使用流或者资源的时候,就不需要手动关 闭,Java 会自 ...
- 你需要了解的 C++ 17 Top 19 新特性(附精彩评论)
什么是 C++17? C++17(或 C++1z)是继 C++14 之后 C++ 编程语言 ISO/IEC 标准的下一次修订的非正式名称.C++17 现在功能已齐全,正在成为国际标准的路上.它的规范已 ...
- JDK 7中的文件操作的新特性
文件系统综述 一个文件系统在某种媒介(通常是一个或多个硬盘)上存储和组织文件.如今的大多数文件系统都是以树状结构来存储文件.在树的顶端是一个或多个根节点,在根节点一下,是文件和目录(在Windows系 ...
- JDK 5 ~ 11 新特性倾情整理
为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~11的所有关键新特性! 先看一下JDK的版本迭代图: 注: OpenJDK和JDK区别 GPL协议通用性公开许可证(General ...
- Java 13 即将发布,新特性必须抢先看!
作者:h4cd 本文转载自开源中国(ID:oschina2013) 由于 Java 现在采取"半年发布一次新版本"的模式,所以 Java 12 的下一个版本 Java 13/JDK ...
- Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. 可以看出 Java 8 扩 ...
- 个人认为目前比较好用的ECMAScript(16-20)新特性
ECMAScript(16.17.18.19)新特性 Array.prototype.includes includes 是数组上的简单实例方法,可以轻松查找到数组中是否包含指定内容(包括NaN) 返 ...
- 海豚调度直播来了 - 即将发版的1.3.0新特性及Roadmap路线
在过去的3个多月,Apache DolphinScheduler(incuating)和DolphinScheduler社区发生了很多变化,今晚19:30在线直播将为大家介绍最新1.3.0的新特性及R ...
- Maclean Liu对Oracle Database 12c新特性研究汇总
Maclean Liu关于DB 12c新特性的研究文章如下: [Oracle Database 12c新特性] In-Database Archiving数据库内归档 [Oracle Database ...
随机推荐
- Kernel调试追踪技术之 Kprobe on ARM64
kprobe是什么? kprobe 是一种动态调试机制,用于debugging,动态跟踪,性能分析,动态修改内核行为等,2004年由IBM发布,是名为Dprobes工具集的底层实现机制[1][2],2 ...
- 105份墨天轮“国产化迁移”干货文档汇总(含TiDB、openGauss、上云等)
当前国产数据库产品百花齐放,随着政策的推进.技术的迭代以及市场需求的逐步扩大,数据库国产化正在加速进行中,有越来越多的金融.通信.制造.互联网等企业机构以及政府机关单位将业务系统从Oracle.MyS ...
- 把数字转换RMB形式
方法1 : var str = '12345679' let strNew = str.replace(/\B(?=(?:\d{3})+\b)/g, ',') // 匹配单词边界替换为逗号 方法2: ...
- C#轻松实现Modbus通信
1.前言 大家好!我是付工.前面给大家介绍了一系列关于RS485与Modbus的知识. 终于有人把RS485说清楚了终于有人把Modbus说明白了通透!终于把ModbusRTU弄明白了这样看来,Mod ...
- Nacos2.3.2在ubuntu中的部署
Nacos2.3.2 在ubuntu下的部署 下载地址 发布历史 | Nacos 官网 https://download.nacos.io/nacos-server/nacos-server-2.3. ...
- Java高并发之线程的实现方式,含Lamabda表达式
Java中线程实现的方式 在 Java 中实现多线程有4种手段: 1.继承 Thread 类 2.实现 Runnable 接口 3.匿名内部类 4.Lambda表达式实现 实现 Runnable 接口 ...
- OpenCV开发笔记(八十一):通过棋盘格使用鱼眼方式标定相机内参矩阵矫正摄像头图像
前言 对于广角摄像头通过相机图片可以识别出棋盘角点计算相机内参矩阵,通过畸变校准可以得到较好的效果,但是鱼眼摄像头通过这种方式获得周围四周的图像效果并不是很好.所以,鱼眼摄像头在校准上与普通摄像头 ...
- 一文彻底弄懂MySQL优化之深度分页
深度分页(Deep Pagination)在MySQL中指的是对大型数据集进行分页查询时,尤其是当需要获取较后页的数据时,性能可能会受到影响.传统的分页方法在数据量较大时,随着页数的增加,性能会迅速下 ...
- Ros环境创建相关!超级简单!!超级详细!!
1.创建工作空间workspace 其中catkin_ws后面的ws是work_space的简写,指代工作空间 <catkin_ws是你的工作空间的名字,随便取> mkdir -p ~/c ...
- 一个基于.Net Core 开源的物联网基础平台
在智慧工厂领域,智慧城市领域,都需要对设备进行监控.比如工厂需要对周围环境温度.湿度.气压.电压,灯的开关进行监控.这时候就需要物联网平台来进行管理. 在智慧工厂领域,宝马集团通过英伟达的Omnive ...