背景 项目中需要调用多个服务,如果使用 open-Feign 串行化调用,响应时间可能会比较长,后续使用了 CompletableFuture 和线程池进行异步调用,但是在调用时,可能存在调用的服务报错,导致整个查询方法直接抛出...
JavaSE
为什么不在 ForkJoinPool 中使用虚拟线程?
刚才看到一张帖子提到为什么在 ForkJoinPool 中不使用虚拟线程? 在 JDK 21 中进行测试 public static void main(String[] args) throws InterruptedException { Runnable task = () -> { System....
SPI机制详解【JDK vs Dubbo 】
SPI SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正...
ReentrantLock底层原理
ReentrantLock public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); } ReentrantLock 的默认实现是非公...
AQS实现原理
AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效地构造出来。 不仅 ReentrantLock 和 Semaphore 是基于AQS构建的,还包括 CountDownLatch、Reentrant...
Java中的反射机制详解
反射的简单demo 声明的原始类 class Cat { private String name = "猫猫"; public int age = 10; public Cat(){} public Cat(String name) { this.name = name; } p...
对CAS的理解和分析
CAS CAS(CompareAndSet 或 CompareAndSwap)又称 无锁,乐观锁,实现方式是非阻塞同步。 CAS指令有三个操作数,分别是内存位置(在Java中可以简单地理解为变量的内存地址,用V表示)、旧的预期值(用A表示)和...
本地文件的上传和下载
@Slf4j @RestController @RequestMapping("/common") public class CommonController { /** * 将用户上传的文件转存到指定位置 * @param fileUp * @return */ @PostMappin...