BETTER LATE THAN NEVERJava synchronized原理总结 返回首页

Java synchronized原理总结

发表于2021-10-18|更新于2026-04-28|🐺JAVA
|浏览量:

我觉得并不会比他写得好:

点击此处

文章作者: Frosro
文章链接: https://frosro.github.io/2021/10/18/Java-synchronized%E5%8E%9F%E7%90%86%E6%80%BB%E7%BB%93/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 BETTER LATE THAN NEVER!
JAVA锁synchronized原理
上一篇
Java虚拟机
参考连接 JVM总结
cover of next post
下一篇
JAVA集合的多种遍历方式总结
Collection 集合 : 总的来说分为以下这三类,这里更多的子类我便不在阐述了。 Set : 无序集合,元素不可重复; Queue : 队列; List : 有序集合,元素可以重复; Map集合 :一般用于保存拥有映射关系的数据,也就是 key-value 键值对,它也有很多子类,这里不细说; 本文以HashSet 为例,总结遍历方式。当然像List这种有序集合还可以通过for循环的方式遍历。 下面是主要内容: 一、使用 Lambda 表达式遍历集合从 JDK8 开始,Iterable 接口新增了 forEach(Consumer action)方法,主要 是使用 Lambda 表达式更加简洁的操作。Consumer 其实是一个函数式接 口,只要是函数式接口,都能够使用 Lambda 表示来进行替代。在调用这 个方法的时候,其实会依次将集合的元素传递给 Consumer 中的 accept(T t) 方法去处理。 12345678910111213141516/** * @author frosro * @data 21:34 */public class...
相关推荐
2021-03-01
CAS和Synchronized的区别
更多资源:https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E5%B9%B6%E5%8F%91.md 一、CAS概念: CAS(Compare And Swap ) 或( Compare-and-Set )是乐观锁的一种实现方式,是一种轻量级锁。JAVA1.5开始引入了CAS,JUC下很多工具类都是基于CAS。 CAS的实现方式: CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。当多个线程同时尝试使用CAS更新一个变量时,任何时候只有一个线程可以更新成功,若更新失败,线程会重新进入循环再次进行尝试。 CAS带来的问题ABA问题 :ABA问题是指在CAS操作时,其他线程将变量值A改为了B,但是又被改回了A,等到本线程使用期望值A与当前变量进行比较时,发现变量A没有变,于是CAS就将A值进行了交换操作,但是实际上该值已经被其他线程改变过,这与乐观锁的设计思想不符合。ABA问题的解决思路是,每次变量更新的时候把变量的版本号加1,...
2024-08-21
java多线程知识检验
1. 并行和并发有什么区别?· 并行:多个处理器或多核处理器同时处理多个任务。 · 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。 如下图: 并发 = 两个队列和一台咖啡机。 并行 = 两个队列和两台咖啡机。 2. 线程和进程的区别?一个程序下至少有一个进程,一个进程下至少有一个线程,一个进程下也可以有多个线程来增加程序的执行速度。 3. 守护线程是什么?守护线程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。在 Java 中垃圾回收线程就是特殊的守护线程。 4. 创建线程有哪几种方式?创建线程有三种方式: · 继承 Thread 重写 run 方法; · 实现 Runnable 接口; · 实现 Callable 接口。 5. 说一下 runnable 和 callable 有什么区别?runnable 没有返回值,callable 可以拿到有返回值,callable 可以看作是 runnable 的补充。 6. 线程有哪些状态?线程的状态: ·...
2025-08-02
容器小记
容器中的设计模式: 迭代器模式;[例子:容器循环所使用的 Iterator 迭代器] 设配器模式:简单的说就是将原本两个不相干的类联系起来(类似于充电器,连接插座和用电器,将电压变成电器匹配的量级);[例子:Arrays.asList() 将数组转换成List] 默认长度 & 扩容大小: List 默认大小 默认扩容 备注 ArrayList 10 原来的1.5倍 由数组实现,因此支持快速随机访问;扩容操作需要将原数组整个复制到新数组中,代价很高;删除元素是将删除index后的元素复制到index的位置,代价很高; Vector 原来的2倍 与ArrayList相似,但是使用了synchronized进行同步,是线程安全的 得到一个线程 安全的ArrayList替代方案: ① Collections.synchronizedList() ② concurrent 并发包下的 CopyOnWriteArrayList 类 CopyOnWriteArrayList : 写操作在一个复制的数组上进行,读操作还是在原始数组中进行,读写分...
2022-06-05
SpringCloud Alibaba 之 Sentinel(二)
**Sentinel是面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、服务降级、系统负载保护等多个维度来帮助我们保障微服务的稳定性。**1、Sentinel的特性 丰富的应用场景 实时监控 开源生态支持 SPI扩展点支持 2、Sentinel的组成 核心库:不依赖任何框架/库,能够运行于所有JAVA运行时环境,同时对Dubbo、Spring Cloud 等框架也有较好的支持。 控制台:基于Spring Boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。 3、Sentinel Dashboard的部署 在GitHub中Sentinel的源码仓库中: 直接下载源码通过mvn clean package自己构建 直接在Release页面下载已经构建好的 Jar,地址:https://github.com/alibaba/Sentinel/releases。 命令启动控制台 4、Sentinel的基本应用4.1、实现限流的简单demo引入Sentinel核心库 12345<dependency> <gro...
2024-03-01
java[spring/springMVC]知识检验
1. 为什么要使用 spring?· spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。 · spring 提供了事务支持,使得事务操作变的更加方便。 · spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。 · 更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。 2. 解释一下什么是 aop?aop 是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 简单来说就是统一处理某一“切面”(类)的问题的编程思想,比如统一处理日志、异常等。 3. 解释一下什么是 ioc?ioc:Inversionof Control(中文:控制反转)是 spring 的核心,对于 spring 框架来说,就是由 spring 来负责控制对象的生命周期和对象间的关系。 简单来说,控制指的是当前对象对内部成员的控制权;控制反转指的是,这种控制权不由当前对象管理了,由其他(类,第三方容器)来管理。 4. sprin...
2024-01-03
java Zookeeper 知识检验
1. zookeeper 是什么?zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 2. zookeeper 都有哪些功能?· 集群管理:监控节点存活状态、运行请求等。 · 主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper 可以协助完成这个过程。 · 分布式锁:zookeeper 提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多线线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。zookeeper可以对分布式锁进行控制。 · 命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。 3. zookeeper 有几种部署模式?zookeeper 有三种部署模式: · ...
avatar
Frosro
文章
36
标签
47
分类
5
Follow Me
公告
This is my Blog
最新文章
记一次登录请求始终10秒中断的生产问题2026-05-08
OAuth 2.0 与 OIDC (OpenID Connect) 学习笔记2026-04-18
Nacos-服务启动无法获取配置问题排查与解决2026-04-17
部署web到Tomcat的三种方式2026-03-21
并发编程(三)2026-01-22
© 2025 - 2026 By Frosro框架 Hexo 7.3.0|主题 Butterfly 5.5.5-b1