摘要:
Java 线程状态 (6 种) Java线程的生命周期分为:NEW(初始化状态)、RUNNABLE(可运行状态/运行状态)、BLOCKED(阻塞状态)、WAITING(等待状态)、TIMED_WAITING(有时限的等待)、TERMINATED(终止状态)。 可以看下源码中线程State的枚举类: 阅读全文
摘要:
AQS aqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock、CountDownLatch等。AQS是一个抽象类,主要是通过继承的方式来使用,它本身没有实现任何的 阅读全文
摘要:
synchronized是Java内置的一个关键字,Lock是是一个Java接口。 synchronized无法判断获取锁的状态,而lock锁可以判断是否获取到了锁。 synchronized会自动释放锁,而lock必须手动释放锁。如果不释放就会变成死锁。 synchronized 可重入锁,不可以 阅读全文
摘要:
运行时,会在栈中产生两个引用,指向堆中相应的对象。 可以看到,ThreadLocalMap使用ThreadLocal的弱引用作为key,这样一来,当ThreadLocal ref和ThreadLocal之间的强引用断开 时候,即ThreadLocal ref被置为null,下一次GC时,thread 阅读全文
摘要:
读操作步骤(根据文档id查询): 客户端发送Get请求到NODE1。 NODE1使用文档的_id决定文档属于shard0。shard0的所有分片位于所有3个节点上。这次,它将请求路由至NODE2。 NODE2将文档返回给NODE1,NODE1将文档返回给客户端。 ES读数据底层原理: 客户端发送请求 阅读全文