Java-[SPI]

Java-[SPI]

什么是SPISPI全称Service Provider Interface。简单理解就是一个不用依赖Spring框架即可简易实现ioc容器的一个技术手段。JDK-SPIJDK 提供了一个java.util.ServiceLoader类用于在指定路径META-INF/services下发现服务。在指定路径下新建名字为接口全名的文件,然后里面配置实现类的全名。public interface J...

Java 2021-07-20 AM 1709次 0条
Lombok

Lombok

@NonNull这个注解可以用在成员方法、构造方法的参数前面或者用在成员变量上方,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常。//成员方法参数加上@NonNull注解 public String getName(@NonNull Person p){ return p.getName(); } ///// 相当于 /////// public St...

Java,后端 2021-07-05 AM 1933次 0条
Java-CAS源码分析

Java-CAS源码分析

CAS是Compare And Swap。它是java.util.concurrent包的基石。我们知道,如果线程直接对volatile变量赋值(原子性操作),也是可以实现线程安全的,但更多情况,我们线程对volatile变量的修改与volatile变量的当前值是有关系的!!,这就需要先对这个volatile变量读,然后再写,这就有了至少两个步骤了,所以这个操作不是原子性的,所以就不能保证线...

Java 2021-04-22 AM 2161次 0条
Java-实现一个简单锁

Java-实现一个简单锁

简单锁类package com.fangshirui; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.locks.LockSupport; /** * 简单锁的实现 * * ...

杂类,Java 2021-04-21 PM 2245次 0条
Java-多线程

Java-多线程

Java线程状态状态描述初始状态(New)线程对象被创建后就进入了新建状态就绪状态(Runnable)线程对象调用start方法进入可运行线程池中,此时就处于就绪状态中。运行状态(Running)当前线程获得CPU时间片,开始执行。注意:线程只能由就绪状态进入运行状态。终止状态(Dead)线程完成所有工作,正常退出,或者因异常退出。阻塞状态(Bloacked)线程因为某种原因放弃CPU使用权...

Java 2021-04-20 PM 1973次 0条