- 博客(54)
- 收藏
- 关注
原创 并发List:CopyOnWriteArrayList
JUC包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,使用了写时复制策略,对其进行的修改操作都是在底层的一个复制的数组上进行的。CopyOnWriteList 实现的接口和 ArrayList 完全相同,所以 ArrayList 提供的 api ,CopyOnWriteArrayList 也提供。
2023-06-30 15:52:08
1367
原创 线程同步器:CountDownLatch、CyclicBarrier、Semaphore
日常开发中经常遇到一个线程需要的场景,在CountDownLatch出现之前通常使用join方法来实现,但join方法不够灵活,所以开发了CountDownLatch。CountDownLatch比join方法来实现线程同步更加灵活。CountDownLatch是使用AQS实现的,使用AQS的状态变量存放计数器的值。
2023-06-30 14:54:41
901
原创 4.原子操作类:AtomicLong、LongAdderLong、Accumulator
JUC包中有AtomicInteger、AtomicLong和AtomicBoolean等原子性操作类,它们原理类似,下面以AtomicLong为例进行讲解。递增和递减操作代码上述代码中,valueOffset为AtomicLong在static语句块中进行初始化时通过。可以看到,上述四个方法都是(原子性操作)实现的。AtomicLong使用示例AtomicLong使用CAS非阻塞算法,性能比使用synchronized等的阻塞算法实现同步好很多。但在高并发下,大量线程会同时去竞争更新同一个原
2023-06-30 14:44:45
591
原创 2.CAS
使用锁不好的地方,当一个线程没有获取到锁时会被阻塞挂起,导致线程上下文切换和重新调度开销。Java提供了非阻塞的volatile关键字来解决共享变量的可见性问题,但是volatile不能解决读-改-写等原子性操作。CAS即Compare And Swap,JDK提供的非阻塞原子性操作,通过硬件保证了比较-更新操作的原子性,JDK中Unsafe类提供了一系列的compareAndSwap*方法。
2023-06-30 14:37:13
253
原创 2.ThreadLocalRandom
一般情况下,我们都会使用java.util.Random来生成随机数(Math.random()也是使用Random实例生成随机数)。
2023-06-30 14:16:31
331
原创 微服务实战--高级篇:多级缓存:Nginx本地缓存、Redis、Tomcat、JVM缓存、数据库
微服务实战--高级篇:多级缓存:Nginx本地缓存、Redis、Tomcat、JVM缓存、数据库
2023-02-13 13:56:18
1981
原创 微服务实战--基础篇:Eureka、Ribbon、Nacos、Feign
黑马程序员:微服务实战--基础篇:Eureka、Ribbon、Nacos、Feign学习笔记
2023-02-01 09:30:33
765
1
原创 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)
数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)
2022-11-28 15:05:15
808
原创 设计模式之美——行为型3:迭代模式、访问者模式、命令模式、解释器模式、中介模式
设计模式之美——行为型3:迭代模式、访问者模式、命令模式、解释器模式、中介模式
2022-11-25 17:13:30
280
原创 数据结构与算法之美笔记——基础篇(中):树,二叉树,二叉查找树,平衡二叉查找树,红黑树,递归树,堆
数据结构与算法之美笔记——基础篇(中):树,二叉树,二叉查找树,平衡二叉查找树,红黑树,递归树
2022-11-07 23:47:16
582
原创 数据结构与算法之美笔记——基础篇(中)——排序:冒泡插入选择快排归并桶计数基数
数据结构与算法之美笔记——基础篇(中)——排序:冒泡插入选择快排归并桶计数基数
2022-10-31 17:10:06
242
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人