摘要:
1. 概述 Java 支持开箱即用的多线程。这意味着通过在单独的工作线程中并发运行字节码,JVM能够提高应用程序性能。 虽然多线程是一个强大的功能,但它是有代价的。在多线程环境中,我们需要以线程安全的方式编写实现。这意味着不同的线程可以访问相同的资源,而不会暴露错误行为或产生不可预知的结果。这种编程 阅读全文
摘要:
1. 概述 在本教程中,我们将讨论孵化器功能结构化并发 (JEP 428),它为 Java 19 提供了结构化并发功能。我们将指导你使用新的 API 来管理多线程代码。 2. 理念 通过采用并发编程风格来降低线程泄漏和取消延迟的可能性,从而增强多线程代码的可维护性、可靠性和可观察性,这是与取消和关闭 阅读全文
摘要:
1. 概述 在本文中,我们将研究java.util.concurrent包中的DelayQueue构造。这是一个阻塞队列,可用于生产者-消费者程序。 它有一个非常有用的特性——当消费者想要从队列中获取一个元素时,他们只能在该特定元素的延迟到期时获取它。 2. 为延迟队列中的元素实现延迟 我们要放入D 阅读全文
摘要:
1. 概述 软件组件的解耦是软件设计中最重要的部分之一。实现此目的的一种方法是使用消息传递系统,它提供组件(服务)之间的异步通信方式。在本文中,我们将介绍其中一个系统:RabbitMQ。 RabbitMQ 是一个实现高级消息队列协议 (AMQP) 的消息代理。它为主要编程语言提供客户端库。 除了用于 阅读全文
摘要:
1. 概述 在本教程中,我们将探索使用 Spring AMQP 框架通过 AMQP 进行基于消息的通信。首先,我们将介绍消息传递的一些关键概念。然后,我们将继续一个实际示例。 2. 基于消息的通信 消息传递是一种在应用程序之间进行通信的技术。它依赖于异步消息传递,而不是基于同步请求响应的体系结构。消 阅读全文
摘要:
1. 简介 异步消息传递是一种松散耦合的分布式通信,在实现事件驱动体系结构方面越来越流行。幸运的是,Spring框架提供了 SpringAMQP 项目,允许我们构建基于AMQP的消息传递解决方案。 另一方面,在此类环境中处理错误可能是一项艰巨的任务。因此,在本教程中,我们将介绍处理错误的不同策略。 阅读全文
摘要:
1. 简介 在多进程并发环境中,多个进程可能会争用一组有限的资源。如果进程请求资源,而该资源当前不可用,则进程将等待该资源。有时,此等待过程永远不会成功访问资源。这种对资源的等待会导致三种情况——死锁、活锁和饥饿。 在本教程中,我们将讨论这三个条件。 2. 死锁 在本节中,我们将首先讨论死锁、其必要 阅读全文
摘要:
1. 概述 虽然多线程有助于提高应用程序的性能,但它也带来了一些问题。在本教程中,我们将在 Java 示例的帮助下研究两个这样的问题,死锁和活锁。 2. 死锁 2.1. 什么是死锁? 当两个或多个线程永远等待另一个线程持有的锁或资源时,就会发生死锁。因此,应用程序可能会停止或失败,因为死锁线程无法进 阅读全文