Java Fibers10 Sept 2024 | 4 分钟阅读 在本文中,我们将探讨 Java Fibers 是什么,以及它们在 Java 编程语言中的使用场景。 什么是 Java Fibers?在编程语境中,Java Fibers 也被称为 Java 虚拟机 (JVM) Fibers。JVM Fibers 是可以在用户模式下应用的用户模式线程。在 Java 中运行的每一行代码都以线程的形式运行。Java Fibers 和 Java Threads 的抽象和应用是相同的。Java Fibers 和 Java Threads 之间唯一的区别是,Threads 需要大量的 RAM,并且启动和同步速度较慢。但 Java Fibers 完全特定于运行时。Java Fibers 非常轻量级,并且在没有虚拟开销的情况下进行同步。Java Fiber 由两个组件构成:调度器和续体。 什么是调度器?Java 中的调度器用于在特定时间点或在某些固定时间间隔调度任务执行。在 Java 编程语言中有多种使用调度器的方式,如下所示:
什么是续体?Java 中的续体是一个不可变对象,它捕获 Java 栈中的所有内容。Java 中的续体对象用于稍后恢复捕获的执行状态。捕获 Java 栈中所有内容的续体对象包括:
Quasar FiberQuasar Fiber 是一个 Java Fiber,它在 Java 编程语言中类似于线程。Quasar Fiber 在 Java 中实现了线程 API。Quasar 将 Java 编程语言中的线程和 Quasar Fiber 的实现抽象为一个“链”或简称为“粗绳”。这使得 Fibers 和 Threads 能够方便地进行协作,而不会受到任何干扰。让我们考虑这样一个场景:一个 Java 应用程序在主线程中启动。如果我们希望在某个点使用 Fiber 而不是线程,我们可以在运行时在该特定点生成 Fiber,并将其连接到该点的线程。我们还可以利用与 Java 中的链通用的方法,因为我们可以将链用作 Fibers 或线程。事实上,Quasar Fiber 还包括一个基于链的 Java 编程语言“java.util.concurrent”的端口,并支持 Fiber。Quasar 的实现方法几乎与内核在 OS 线程上使用的实现方法相似。在 Quasar 方法中,我们通常将 Java Fiber 的整个堆栈冻结到其基本运行方法,然后该方法可以在常用的 Java 执行器上重新调度。换句话说,这种实现也称为 Fiber 挂起。 使用 Quasar Fibers 的必要性操作系统线程提供了我们所需的一切,但性能代价巨大。对于 Fibers 而言,它们在应用程序层进行调度,并且可以使用适合其用例的更好的调度器。大多数 Fibers 的主要目的是服务事务。因此,它们只活动很短的时间,并且经常被阻塞。Fiber 通常由另一个 Fiber 唤醒,因为它们只运行很短的时间,并且它们将控制权转移给另一个被唤醒的 Fiber。两个 Fiber 之间的控制转移是通过同步机制(如队列)完成的。在 Quasar Fibers 中切换 Fiber 时,缓存丢失最少,因为它使用了“工作窃取”算法。 Java Fibers 是生成器还是异步/等待?正如我们所讨论的,Java Fibers 实际上是由续体对象和调度器组成的线程。生成器和异步/等待都是使用续体或无栈实现的,它们只能捕获单个栈帧。但是这些续体没有与之关联的调度器。因此,这些生成器和异步/等待不是线程。因此,它们不能是 Java Fibers。 结论在本文中,我们学习了 Java Fibers 以及它们的使用原因,以及 Java 编程语言中的线程。我们还讨论了实现 Java Fibers 的主要过程之一,即 Quasar Fibers。 下一个主题Java MD5 哈希示例 |
Java 是一种强大的面向对象编程语言,为开发人员提供了广泛的工具和功能来构建健壮且可扩展的应用程序。使 Java 脱颖而出的特性之一是它对泛型的支持。泛型允许开发人员编写泛型类和...
阅读 4 分钟
?在 Java 中,您可以使用 `java.util.Date` 类提供的 `equals()` 方法来检查日期是否相等。此方法比较两个 `Date` 对象的 time 值,以确定它们是否表示同一时间点。下面是一个演示如何检查的示例程序...
阅读 4 分钟
在本节中,我们将学习如何交换数字的第一位和最后一位。步骤 1:从用户那里读取整数输入。第一步是从用户那里读取整数输入。我们可以使用 Scanner 类来实现这一点。以下是……
阅读 4 分钟
在 Java 中,递增和递减运算符是一元运算符。它们分别用于将变量的值增加或减少 1。递增运算符由一对加号(++)表示,递减运算符由...
阅读 6 分钟
CRC 代表循环冗余校验。它由 W. Wesley Peterson 于 1961 年发明。它是一种错误检测技术,通过该技术我们可以检测数字网络(或通信信道或数字数据)和存储设备中的错误。它用于追踪意外...
5 分钟阅读
Java 是一种流行的编程语言,用于在各种平台上开发应用程序。在处理日期时,通常需要提取特定信息,例如给定日期的星期几。在本节中,我们将讨论如何...
阅读 4 分钟
?图像压缩允许我们在不显著影响视觉质量的情况下减小图像文件的大小。有两种压缩类型。首先,我们使用有损压缩来接受降低的图像质量,同时实现更小的文件大小。例如,我们有...
5 分钟阅读
Java 模式程序可以增强编码技能、逻辑和循环概念。它通常在 Java 面试中被问到,以检查程序员的逻辑和思维。我们可以用不同的设计打印 Java 模式程序。要学习模式程序,我们必须具备……
阅读 13 分钟
给定一个正整数数组,其中每个整数的位数相同。两个整数在同一位置出现的不同数字的数量称为它们之间的数字差。每个对之间的数字差的总和...
7 分钟阅读
在休闲游戏领域,Java 已被证明是一种多功能的编程语言,能够创建引人入胜且有趣的游戏。其中一款游戏就是“汉堡问题”,它以其令人上瘾的游戏玩法吸引了玩家。本文将探讨令人兴奋的“汉堡问题”的世界,这是一个...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India