- 博客(6)
- 收藏
- 关注
原创 ReentrantLock 实现原理
使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。是一个重入锁:一个线程获得了锁之后仍然可以反复的加锁,不会出现自己阻塞自己的情况。AQS 是 Java 并发包里实现锁、同步的一个重要的基础框架。锁类型ReentrantLock 分为公平锁和非公平锁,可以通过构造方法来指定具体类型: //默认.
2021-10-12 20:14:40
862
原创 面试都问的设计模式之门面模式
Facade,中文译为门面、外观,所以本文要讲的 Facade Pattern 翻译时经常看到有两个名字,门面模式和外观模式。这是一个在 JavaScript 中被经常用到的设计模式:class modA {}class modB {}// 门面模式实例class Facade { init() { modA.initialize(); modB.init(); } run() { modA.start(); .
2021-10-11 21:03:17
136
原创 大小厂面试官都爱问的equals,== 与 equals 的区别是什么?
在 Java 中 == 和 equals 的区别,是面试必问的问题,然而只有很少的面试者才能完全回答正确。常见的错误回答就是:== 基础类型对比的是值是否相同,引用类型对比的是引用是否相同;而 equals 则是比较的值是否相同。至于为什么说它是错的,看完本文对 == 和 equals 的解读,你就知道了。1、== 解读对于基本类型和引用类型 == 的作用效果是不同的,如下所示:1.基本类型:比较的是值是否相同;2.引用类型:比较的是引用是否相同;代码示例:String x = "stri.
2021-10-11 20:38:04
77
原创 一文搞懂CAS,CAS原理分析及ABA问题详解
什么是CASCAS即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
582
原创 想进阿里,先把并发CAS(Compare and Swap)实现搞精通
前言在面试中,并发线程安全提问必然是不会缺少的,那基础的CAS原理也必须了解,这样在面试中才能加分,那来看看面试可能会问那些问题:什么是乐观锁与悲观锁什么乐观锁的实现方式-CAS(Compare and Swap),CAS(Compare and Swap)实现原理在JDK并发包中的使用CAS的缺陷1. 什么是乐观锁与悲观锁?悲观锁总是假设最坏的情况,每次读取数据的时候都默认其他线程会更改数据,因此需要进行加锁操作,当其他线程想要访问数据时,都需要阻塞挂起。悲观锁的实现:传统的关系型数
2021-10-09 20:09:53
110
原创 Android 性能优化--卡顿,ANR ,方法耗时监测
常见anrinput,点击事件: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
547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人