2021年06月10日   技术笔记

断断续续用过不少typecho主题,也自己写过几款,最后还是觉得越简约越耐看,于是又写了这款主题: blank。 正如它的名字,空白(其实我就是取名废瞎扯的),这款主题在设计上力求极简,留白多,杂色少,越干净越好。当然,虽然看着简单,但同样内置了丰富的功能。购买可前往:商店

2021年01月13日   技术笔记

ReentrantLock和synchronzied都是互斥锁,即在某一时刻最多只能有一个线程持有锁。互斥锁在保证线程安全的同时,在一定程度上降低了吞吐量,因为这种情况下任何的“读/读”、“读/写”、“写/写”操作都不能同时发生。然而在实际的场景中我们就会遇到这种情况:有些资源并发的访问中,它大部分时间都是执行读操作,写操作比较少,但是读操作并不影响数据的一致性,如果在进行读操作时采用独占的锁机制,这样势必会大大降低吞吐量。所以如果能够做到读写分离,那就非常完美了。

2020年12月07日   技术笔记

锁是用来控制多个线程访问共享资源的方式,一般来说一个锁可以防止多个线程访问共享资源(但有些锁可以允许多个线程访问共享资源,如读写锁)。在JavaSE5之前,Java使用synchronized关键字实现锁的功能,但是在JavaSE5之后,并发包中提供了Lock接口(及其实现类),用来实现锁的功能。

2020年12月04日   技术笔记

CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 -- 内存地址V、旧的预期值A、要更新的值B,当且仅当内存地址V值等于旧的预期值A时才会将内存V的值修改为B,否则什么都不干。CAS是整个JUC体系最核心、最基础的理论。

2020年12月03日   技术笔记

volatile 是一个类型修饰符。volatile 的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,在一定情况下可以保证线程间的同步性。本文介绍了volatile的特性、实现机制以及使用场景

2020年12月01日   技术笔记

synchronized是Java的一个关键字,解决的是多个线程之间访问共享资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行,同时它还可以保证变量的内存可见性。本文将对sychronized的使用方法、sychronzied的特点以及底层原理做详细阐释。