synchronized 关键字对于锁的一些优化

简介: synchronized 关键字对于锁的一些优化

synchronized 关键字默认采用的是偏向锁。

1. 在程序运行中,如果始终只有一个线程去获取 synchronized 这个锁的话,在 Java 对象中会记录一个线程的 ID,所以在下次获取 synchronized 锁的时候,只需要比较这个线程 ID 就行了。

2. 在程序运行过程中,如果有第二个线程去请求 synchronized 锁的时候,这里就要分成两种情况。

(1)第一种是在没有发生并发竞争锁的情况下,synchronized 会自动升级为轻量级锁,这个时候第二个线程就会尝试自旋锁的方式来获取锁,因为很快就能拿到锁,所以第二个线程也不会被阻塞。

(2)第二种情况是如果这两个线程出现竞争锁的话,synchronized 会升级为重量级锁,这个时候就只有一个线程可以获得锁,另一个线程就会被阻塞到,只有第一个线程释放锁之后,第二个线程才能拿到锁。

相关文章
|
缓存 运维 NoSQL
Redis 集群化部署实战:打造高可用、可扩展的缓存系统
本文详细介绍Redis集群化部署方案,涵盖架构设计、环境准备、配置优化、Docker部署、集群管理、监控运维及故障处理,助你构建高可用、可扩展的分布式缓存系统。
212 2
|
5月前
|
监控 安全 Java
SpringBoot应用-Actuator监控
Spring Boot Actuator 是 Spring Boot 提供的一个独立模块,旨在通过简单的方式提供应用程序的监控和管理功能。Actuator 内置了多种端点(Endpoints),可以用于查看应用的健康状况、配置属性、日志级别等。
906 1
|
存储 安全 Java
Qt线程池+生产者消费者模型
Qt线程池+生产者消费者模型
769 5
|
4月前
|
负载均衡 Java 应用服务中间件
杂项10
Spring Cloud Alibaba 与 Spring Cloud 均基于 Spring Boot 构建微服务,遵循相同规范且组件可协同使用。区别在于,Spring Cloud Alibaba 使用 Nacos 实现服务发现与配置管理,推荐 Sentinel 作为断路器,并支持 Dubbo 与 Feign 远程调用。Nginx 可通过配置 upstream 实现负载均衡,作为反向代理,其“反向”体现在外网通过 Nginx 访问内部服务器。
|
JSON 安全 Java
使用Spring Boot和JWT实现用户认证
使用Spring Boot和JWT实现用户认证
|
4月前
|
SQL 关系型数据库 MySQL
explain的type几种类型详解
在 MySQL 中,使用 EXPLAIN(或 EXPLAIN SELECT ...)可以查看 SQL 语句的执行计划,而其中最重要的字段之一就是 type。它表示 MySQL 在执行查询时访问数据表的方式(即访问类型),也叫做 连接类型(Join Type)。
|
9月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
本文介绍了在Spring Boot项目中如何通过创建`GlobalExceptionHandler`类来全局处理系统异常。通过使用`@ControllerAdvice`注解,可以拦截项目中的各种异常,并结合`@ExceptionHandler`注解针对特定异常(如参数缺失、空指针等)进行定制化处理。文中详细展示了处理参数缺失异常和空指针异常的示例代码,并说明了通过拦截`Exception`父类实现统一异常处理的方法。虽然拦截`Exception`可一劳永逸,但为便于问题排查,建议优先处理常见异常,最后再兜底处理未知异常,确保返回给调用方的信息友好且明确。
1216 0
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
|
JSON 安全 算法
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
875 8
|
算法 安全 Java
Java多线程基础-12:详解CAS算法
CAS(Compare and Swap)算法是一种无锁同步原语,用于在多线程环境中更新内存位置的值。
396 0
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
414 7