- 博客(6)
- 收藏
- 关注
原创 ReentrantLock 实现原理
使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程获得了锁之后仍然可以反复的加锁,不会出现自己阻塞自己的情况。 AQS 是 Java 并发包里实现锁、同步的一个重要的基础框架。 锁类型 ReentrantLock 分为公平锁和非公平锁,可以通过构造方法来指定具体类型: //默认.
2021-10-12 20:14:40
941
原创 面试都问的设计模式之门面模式
Facade,中文译为门面、外观,所以本文要讲的 Facade Pattern 翻译时经常看到有两个名字,门面模式和外观模式。 这是一个在 JavaScript 中被经常用到的设计模式: class modA {} class modB {} // 门面模式实例 class Facade { init() { modA.initialize(); modB.init(); } run() { modA.start(); .
2021-10-11 21:03:17
206
原创 大小厂面试官都爱问的equals,== 与 equals 的区别是什么?
在 Java 中 == 和 equals 的区别,是面试必问的问题,然而只有很少的面试者才能完全回答正确。 常见的错误回答就是:== 基础类型对比的是值是否相同,引用类型对比的是引用是否相同;而 equals 则是比较的值是否相同。 至于为什么说它是错的,看完本文对 == 和 equals 的解读,你就知道了。 1、== 解读 对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 1.基本类型:比较的是值是否相同; 2.引用类型:比较的是引用是否相同; 代码示例: String x = "stri.
2021-10-11 20:38:04
141
原创 一文搞懂CAS,CAS原理分析及ABA问题详解
什么是CAS CAS即Compare And Swap的缩写,翻译成中文就是比较并交换,其作用是让CPU比较内存中某个值是否和预期的值相同,如果相同则将这个值更新为新值,不相同则不做更新,也就是CAS是原子性的操作(读和写两者同时具有原子性),其实现方式是通过借助C/C++调用CPU指令完成的,所以效率很高。 CAS的原理很简单,这里使用一段Java代码来描述 public boolean compareAndSwap(int value, int expect, int update) { // .
2021-10-09 21:44:57
683
原创 想进阿里,先把并发CAS(Compare and Swap)实现搞精通
前言 在面试中,并发线程安全提问必然是不会缺少的,那基础的CAS原理也必须了解,这样在面试中才能加分,那来看看面试可能会问那些问题: 什么是乐观锁与悲观锁 什么乐观锁的实现方式-CAS(Compare and Swap),CAS(Compare and Swap)实现原理 在JDK并发包中的使用 CAS的缺陷 1. 什么是乐观锁与悲观锁? 悲观锁 总是假设最坏的情况,每次读取数据的时候都默认其他线程会更改数据,因此需要进行加锁操作,当其他线程想要访问数据时,都需要阻塞挂起。悲观锁的实现: 传统的关系型数
2021-10-09 20:09:53
159
原创 Android 性能优化--卡顿,ANR ,方法耗时监测
常见anr input,点击事件:5秒; contentprovider:10秒; Broadcast:前台10秒,后台60秒; 服务 service:前台20秒,后台200秒 原理 埋炸弹和拆炸弹 当启动service的时候,会调用 scheduleCreateService方法创建service app.thread.scheduleCreateService(r, r.serviceInfo, mAm.compatibilityInfoForPackageLocke.
2021-10-08 19:50:42
666
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人