Java 各种锁机制

Java 提供了多种锁机制,以满足不同的并发场景需求。

线程池机制

线程池能够管理和复用线程,从而减少线程创建和销毁带来的开销。Java 提供了 ExecutorService 接口及其实现类来实现线程池

AQS 的核心思想

AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中。 CLH(Craig,Landin,and Hagersten)队列是一个虚拟的双向队列(虚拟的双向队列即不存在队列实例,仅存在结点之间的关联关系)。AQS是将每条请求共享资源的线程封装成一个CLH锁队列的一个结点(Node)来实现锁的分配。 AQS使用一个int成员变量来表示同步状态,通过内置的FIFO队列来完成获取资源线程的排队工作。AQS使用CAS对该同步状态进行原子操作实现对其值的修改。

http 和https的区别

  1. 定义与功能:HTTP 是一种用于在网络上传输超文本(如 HTML 页面、图片、视频等)的应用层协议。它规定了客户端(如浏览器)和服务器之间如何进行请求和响应,使得用户能够通过浏览器访问各种网站和获取信息。

  2. 定义与功能:HTTPS 是在 HTTP 的基础上加入了 SSL/TLS(安全套接层 / 传输层安全)协议,用于对数据进行加密和身份验证,确保数据在传输过程中的安全性和完整性。

java NIO

Java NIO(New Input/Output)是 Java 1.4 版本引入的一套新的 I/O API,它提供了与标准 Java I/O 不同的处理方式,在高并发、高性能的网络编程和文件处理等场景中表现出色。下面从核心组件、工作模式、示例代码等方面为你详细介绍 Java NIO。

核心组件

工作模式

Java NIO 有两种主要的工作模式:

Spring Cloud 5大组件有哪些

RabbitMQ

是一个在 AMQP(高级消息队列协议)基础上实现的,开源、功能强大且应用广泛的消息中间件。
核心概念