Lombok

Lombok

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

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

Java-CAS源码分析

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

Java 2021-04-22 AM 2197次 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 2280次 0条
Java-多线程

Java-多线程

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

Java 2021-04-20 PM 2010次 0条
操作系统导论-并发

操作系统导论-并发

多线程一般而言,一个程序只有一个执行点(一个程序计数器,用于存放要执行的指令),但多线程程序有多个执行点。换一个角度来说,每个线程都类似于一个独立的进程,只有一点区别:它们共享地址空间,可以访问相同的数据。线程之间的切换类似于进程间的上下文切换。与进程间上下文切换相比的主要区别是:地址空间保持不变,即不需要切换当前使用的页表。🐴在多线程的进程中,每个线程独立运行,因此每个线程都有自己独立的栈...

操作系统 2021-04-13 PM 1952次 0条