![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 89
niceHot
做好当下的每一件事情,问题就会逐步得到解决
展开
-
Redis基础知识
redis速度快很大部分的原因是它将数据放在了内存里面,但是如果断电或者宕机就会导致数据丢失,为保证重启后数据不丢失没提供三种持久化机制RDB(Read dataBase) AOF(Append Only File)混合持久化原创 2023-01-30 15:11:11 · 152 阅读 · 0 评论 -
ThreadLocal解读
ThreadLocal线程局部变量原创 2023-01-30 14:42:22 · 200 阅读 · 0 评论 -
JMM面试题
JMM是一套多线程读写共享数据时,对数据的可见性,有序性和原子性的规则。用来屏蔽硬件和操作系统的访问差异,让Java程序在各种平台下达到一致的访问效果。JMM描述的是一组规则,围绕原子性、有序性和可见性展开处理器上的寄存器的读写的速度比内存快几个数量级,所以引入了高速缓存,但是带来了缓存一致性问题。所以引入了一些协议,比如说:变量保存在主存,每个线程拥有一个变量的副本在自己工作内存。原创 2023-01-30 11:16:44 · 182 阅读 · 0 评论 -
静态代码块、构造代码块、构造函数的执行顺序(Java)
首先来看看静态构造代码块长啥样子: static{ ... } 而普通的构造代码块相较之下只是少了一个static关键字 { ... } 在类的执行过程中,代码块和构造函数、main方法的执行顺序有事什么样的呢?请看如下: 以下示例中包含静态代码块、构造代码块、构造函数。创建了两个对象。 package codeblock; /** * 静态方法块只会在最初的时候调用一次 * 但是普通构造方法块在每个对象产生的地方都会调用一次 * 执行顺序:静态代码块 --> main方法 -->原创 2020-12-22 09:20:55 · 212 阅读 · 0 评论 -
Java序列化的使用
准备一个枚举类,枚举类都继承了父类Enum,而Enum又实现了Serializable接口,所以enum类都可直接序列化 package serializable; public enum Gender { MALE,FEMALE } 准备被序列化的类 package serializable; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import原创 2020-12-17 19:34:52 · 174 阅读 · 0 评论 -
Java内部类使用详解
内部类的使用静态内部类成员内部类局部内部类匿名内部类优缺点 静态内部类 静态内部类无需依赖于外部类,只能使用外部类的静态成员和方法,即使是private的也可以。 package innerclass; public class StaticInner { private static int a = 1; private static int b = 2; public static class InnerStatic{ public static int a = 3;原创 2020-12-16 08:29:14 · 133 阅读 · 0 评论 -
Semaphore使用详解及源码解读
概述 Semaphore(信号量)用来控制同时访问特定资源的线程数量,简单地说就是限流。 可以把它比作是控制流量的红绿灯,Semaphore的初始化大小就是可以通过的绿灯流量,达到设定值转红灯无法获得资源。当有一辆车驶出,就能有一辆车获得绿灯通过。车可以理解为线程。 使用acquire()方法获得通行,使用release()方法释放。方法tryAcquire()如果返回true的话也获得了通行,不过得自己释放。 示例 指定可通行数为3,使4个线程同时去,也只能有3个获得通行。 若释放一个线程,就可以有一个线原创 2020-12-15 19:25:48 · 407 阅读 · 0 评论 -
CyclicBarrier使用详解及源码解读
概述 当一组线程到达一个同步点(wait方法调用出)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被拦截的线程才会继续运行。 值得注意的是同步点有多个,当线程到达各自的同步点先会被阻塞,当都到达同步点,就会在各自的同步点处往下执行。 构造方法可以设置在所有线程都到达同步点之前执行另一个线程,wait()方法可以设置等待时间。 实例 package cyclicbarrier; import java.util.concurrent.CyclicBarrier; /** * 字面意思是可循环使原创 2020-12-14 19:20:13 · 223 阅读 · 2 评论 -
synchronized(this)、synchronized(xx.class)、synchronized(Object)的使用及区别
这个类是用来调取方法的 package synchronizedthis; public class SynchronizedThis { int adder = 0; Test test = new Test(); public void useMethod() { synchronized(this) { try { System.out.println(Thread.currentThread().getName() + " use the method and st原创 2020-12-12 20:48:53 · 587 阅读 · 2 评论 -
【Java】反射的使用及方法
准备目标类: package reflex; public class BeReflexed { public String msg1; protected String msg2; private String msg3; public BeReflexed(String msg1, String msg2, String msg3) { super(); this.msg1 = msg1; this.msg2 = msg2; this.msg3 = msg3; } p原创 2020-12-10 20:39:33 · 88 阅读 · 0 评论