标签: Java
编程

Java 并发面试题及答案

130 2024-07-07 18:35:00

Java 中的并发是在技术面试中提出的最复杂和最高级的主题之一。这篇文章提供了你可能遇到的一些面试问题的答案。Q1. 进程和线程的区别进程和线程都是并发单元,但它们有一个根本的区别:进程不共享公共内存,而线程共享。从操作系统的角度来看,进程是在自己的虚拟内存空间中运行的独立软件。任何多任务操作系统(几乎所有现代操作系统)都必须在内存中分离进程,这样...

详情...
编程

OpenJDK 的 Loom 项目

112 2024-07-06 15:58:00

本文中,我们将快速了解 Loom 项目。从本质上讲,Loom 项目的主要目标是支持 Java 中的高吞吐量、轻量级并发模型。Loom 项目是 OpenJDK 社区为 Java 引入轻量级并发结构的一次尝试。到目前为止,Loom 的原型已经在 JVM 和 Java 库中引入了一次更改。虽然 Loom 还没有计划发布,但我们可以在 ...

详情...
编程

推荐的 Spring Boot 项目的包结构

124 2024-07-05 16:39:00

在构建一个新的 Spring Boot 项目时,我们可以高度灵活地组织我们的类。不过,还是有一些建议需要我们牢记。鉴于像 @ComponentScan、@EntityScan、@ConfigurationPropertiesScan 和 @SpringBootApplication 这样的 Spring Boot 注解使用包来定义扫描位置,...

详情...
编程

java.util.concurrent.BlockingQueue 指南

104 2024-07-02 17:52:00

本文中,我们将研究解决并发生产者-消费者问题的最有用的构造之一 java.util.concurrent。我们将研究 BlockingQueue 接口的 API,以及来自该接口的方法如何使编写并发程序变得更容易。在本文的后面,我们将展示一个简单程序的示例,该程序具有多个生产者线程和多个消费者线程。我们可以区分两...

详情...
编程

Java Phaser 指南

108 2024-07-01 12:58:00

本文中,我们将研究 java.util.concurrent 包中的 Phaser 构造。它是一个与 CountDownLatch 非常相似的结构,允许我们协调线程的执行。与 CountDownLatch 相比,它有一些额外的功能。Phaser 是一个屏障(barrier),在继续执行之前,动态数量的线程需要等待它。在 CountDow...

详情...
编程

如何在 Java 中编写 equals 等价方法

114 2024-06-29 02:28:00

本文描述了一种重写 equals 方法的技术,该方法即使在具体类的子类添加新字段时也能保留 equals 的约定。子类化时保留 equals contract 的是“面向对象语言中等价关系的基本问题”。除非你愿意放弃面向对象抽象的好处,否则无法在保留 equals 契约的同时扩展可实例化类并添加值组件。...

详情...
编程

java.util.concurrent 概述

131 2024-06-27 00:05:00

java.util.concurrent 包为创建高并发应用提供了工具。本文将对此包做一个概述。java.util.concurrent 包含了太多的功能,无法在一篇文章中进行讨论。本文中,我们将主要关注此包中一些最有用的实用功能,如:Executor、ExecutorService、ScheduledExecutorService、...

详情...
编程

Java 中的 CountDownLatch 指南

171 2024-06-26 10:25:00

本文中,我们将提供 CountDownLatch 类的指南,并演示如何在几个实际示例中使用它。本质上,通过使用 CountDownLatch,我们可以导致线程阻塞,直到其他线程完成给定的任务。简单地说,CountDownLatch 有一个计数器(counter)字段,你可以根据需要递减。然后我们可以使用它来阻塞调用线程,直到它被...

详情...
编程

Java 中的 Semaphore

145 2024-06-25 12:37:00

本文中,我们将探讨 Java 中信号量(semphore)和 mutex 的基础。我们将从 java.util.concurrent.Semaphore 开始。我们可以使用信号量(semaphore)来限制访问特定资源的并发线程的数量。在以下示例中,我们将实现一个简单的登录队列来限制系统中的用户数量:class LoginQu...

详情...
编程

如何使用 Hibernate 实现软删除

165 2024-06-19 02:50:00

某些应用中,你不希望或不允许从数据库中永久删除记录。但仍然需要删除或隐藏不再活动的记录。一个例子可能是想要保留的用户帐户,因为它链接到仍在使用的其他业务对象。你有两个基本选项可以将这些信息保存在系统中。你可以保留记录所有更改的审核日志,也可以执行隐藏已删除记录的软删除。我在关于Hibernate Envers 的文章中解释了审计日志选项。今天,我想展示如何使...

详情...