摘要:
RestTemplate工具类 /** * RestTemplate 远程调用工具类 */ public class RestTemplateUtil { private static final RestTemplate restTemplate = SpringContextHolder.get 阅读全文
摘要:
九大数据类型 redis命令不区分大小写,但key是区分大小写的 Tips help @类型名词 可以获得该类型的所有操作命令 string string类型是二进制安全的,redis的string可以包含任何数据,如图像、序列化对象。一个键最多能存储512MB。 二进制安全是指,在传输数据的时候, 阅读全文
摘要:
This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get o 阅读全文
摘要:
接下来我们来介绍18罗汉以及LongAdder底层实现原理 (1). 基本类型原子类(AtomicInteger、AtomicBoolean、AtomicLong) (2). 数组类型原子类 (AtomicIntegerArray、AtomicLongArray、AtomicReferenceArr 阅读全文
摘要:
LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 线程等待唤醒机制 3种让线程等待和唤醒的方法 使用Object中的wait()方法让线程等待,使用Object中的notify()方法唤醒线程 使用JUC包中Condition的await()方法让线程等待,使用signal()方法 阅读全文
摘要:
Volatile是Java虚拟机提供的轻量级的同步机制,它的三大特性: 保证可见性 不保证原子性 禁止指令重排 JMM的三大特性,volatile只保证了两个,即可见性和有序性,不满足原子性 当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中。 当读一个v 阅读全文
摘要:
因为CPU的缓存导致CPU的速度比物理主内存的速度快很多,CPU的运行并不是直接操作内存,而是先把内存里边的数据读到缓存,而内存的读和写操作的时候就会造成不一致的问题。 Java虚拟机规范中试图定义一种Java内存模型(java Memory Model,简称JMM) 来屏蔽掉各种硬件和操作系统的内 阅读全文
摘要:
从轻松的乐观锁和悲观锁聊起 悲观锁 认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。 synchronized关键字和Lock的实现类都是悲观锁 使用场景: 适合写操作多的场景,先加锁可以保证写操作时数据正确。 显式的锁定之后再操作同步资源 阅读全文
摘要:
如何停止、中断一个运行中的线程? 首先一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。 其次,在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个 阅读全文
摘要:
StringTable String的基本特性 String:字符串,使用一对 ”” 引起来表示 String s1 = "hello" ; // 字面量的定义方式 String s2 = new String("hello"); String声明为final的,不可被继承 String实现了Ser 阅读全文