摘要:
什么是刚性事务和柔性事务? 先要知道CAP理论是什么? C是一致性 A是可用性 P分区容错性 三个关键要素,只能有两两组合在一起。 BASE理论是什么? 简单理解就是最终一致性、允许中间状态,是AP理论的延伸。 刚性事务就是A(可用性)P(分区容错性) 柔性事务就是BASE理论 阅读全文
摘要:
1.beanDefinition 查看代码 public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { //单例 String SCOPE_SINGLETON = ConfigurableBeanF 阅读全文
摘要:
1.CMS使用三色回收法清除垃圾,老年代使用标记-清除算法。 并发清除阶段使用 - 增量更新 2.具体工作流程: 初始标记:从GC Root根节点扫描直接引用到的对象。(需要SWT) 并发标记:与用户线程代码并行执行,扫描对象图关系。 预清除:关注并发标记到重新标记阶段对象引用的变化,目前是减少重新 阅读全文
摘要:
老年代普生: 1.大对象直接进入老年区(XX:Pretenuresize Threshold),不会放在新生代分配 2.动态年龄判断,当对象年龄1,年龄2....年龄15加起来大于Survivor一半时,进入到老年代。 3.新生代minor gc年龄到15次后会进入到老年代。 4.空间担保策略(CM 阅读全文
摘要:
通过数组与值实现,看源码 public void add(long x) { Cell[] as; long b, v; int m; Cell a; // 尝试直接通过CAS操作累加base的值 // 如果cells数组不为null,或者通过CAS操作未能成功累加base的值 //相当于是更新ba 阅读全文
摘要:
关键信息 state(volatile修饰)/双向链表数据结构 AQS有那些实现? ReentrantLock、Semaphore、CountDownLatch AQS分为同步队列和条件队列 public class BoundedBuffer<T> { private final Lock loc 阅读全文
摘要:
1.对象有三个区域 对象头/实例数据/对其填充 对象头又包含Mark Word/类型指针->指向方法区/数组长度 Mark Word如下图所示 2.偏向锁 当线程首次进入synchronized,他会将对象头的mark work更新为偏向锁。 JDK已废除 3.轻量锁 当线程获取已被偏向的锁时,会将 阅读全文
摘要:
synchronized 代码块实现原理 java 字节码中,用来实现同步代码块的是 monitorenter 和 monitorexit 指令。 monitorenter 指令执行时,当前线程试图获取 objectref 所存储的对象锁(ObjectMonitor 对象) 如果取到的 monito 阅读全文
摘要:
1.synchronized 2.ReentrantLock(可重入锁) public class Main { ReentrantLock lock = new ReentrantLock(); private ThreadLocal stream = new ThreadLocal(); pub 阅读全文
摘要:
ThreadLocal有内部类ThreadLocalMap,ThreadLocalMap是ThreadLocal的核心 1.每个线程下的有一个ThreadLocalMap static class ThreadLocalMap { static class Entry extends WeakRef 阅读全文