总结

1.为什么重新equals为什么要从写hashcode 例如往map中放不仅比较值还比较hashcode。假如new user(1,小明) new user(1,小明) 两个是同一个人,但是如果不重写hashcode的话这两的hashcode不同,比较的话则不相当,放在map中就成两人了

2.String str = "abc" 和String str = new String("abc") 不相等  intern方法将new出来的字符串假如常量池

3.cas 解决方案 AtomicStampedReference 里面维护了一个类似于版本号的变量

3.多个值cas解决方案  AtomicReference 对对象的引用

4.hashmap 转红黑树的条件,以及红黑树转链表条件 转红黑树table数组长度大于64并且node长度大于8 红黑树转node,node长度小于6

5.new object()都做了哪些事 1.看当前new 的对象加载没,如果没有加载则进行加载。2.申请内存,此时成员变量赋初始值。3.调用构造方法给成员变量赋值。4.关联引用

6.ReentrantLock 实现原理 可重入原理,公平锁原理

    实现原理:获取锁(一个volatile修饰的state表示锁状态),如果获取不到就在排队队列中增加一个排队节点。然后进入抢占模式。等待持有锁的线程调用unlock唤醒对列的头节点

    可重入原理:申请锁时判断当前持有锁的线程是否时当前线程,是的话直接获取,不是的话排队,注意重入几次需要释放几次锁

    公平锁实现原理:比非公平锁多了一个(hasQueuedPredecessors判断),判断当前节点在同步队列中有没有前驱节点。有的话说明                             有。 比当前线程更早的排队线程,所以当前线程排队,如果没有的话则获取锁

7.锁实现原理

synchronized 根据monitor来实现的,当获取锁时判断monitor是否为0,为0则获取,不为零则排队。

8.对像头都存有哪些数据? 对像的hashcode,gc的分代信息,锁信息,锁的标识位,是否偏向锁,持有偏向锁的线程id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值