随笔分类 - JUC
摘要:package com.example.demo.threadDemo; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.f
阅读全文
摘要:本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。设置线程名称是很重要的,如果你没有设置过,说明你还“涩世”不深,这里面的坑还不曾踩过,而我 在坑里进去然后坑里出来,被坑的那是一个相当的爽啊~ 为了让不重蹈我的覆辙,为了未来不说起来都是满眼含着“热泪”,还是看下如何
阅读全文
摘要:解决方案 用线程池+ FutureTask将1个查询拆分成多个小查询 选择FutureTask是因为它具有仅执行1次run()方法的特性(即使有多次调用也只执行1次),避免了重复查询的可能。而且多任务异步执行也能提高接口响应速度。 本文主要讲的是线程池搭配FutureTask异步执行的例子 一、线程
阅读全文
摘要:可靠的分布式锁,应该具备的几个特征 互斥性 在任意时刻,只有一个客户端能持有锁 不会发生死锁 即使有有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁 具有容错性 只有大部分的redis节点正常,客户端就可以加锁和解锁 解铃还须系铃人 加锁和解锁必须是同一个客户端,客户端自己
阅读全文
摘要:package com.spinlock.spinlock.juc; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Demo3 { publi
阅读全文
摘要:推荐:https://blog.csdn.net/TZ845195485/article/details/109210263
阅读全文
摘要:在介绍可见性、原子性、有序性的时候,特意提到缓存导致的可见性问题,线程切换带来的原子性问题,编译优化带来的有序性问题,其实缓存、线程、编译优化的目的和我们写并发程序的目的是相同的,都是提高程序性能。但是技术在解决一个问题的同时,必然会带来另外一个问题,所以在采用一项技术的同时,一定要清楚它带来的问题
阅读全文
摘要:LockSupport :用于创建锁和其他同步类的基本线程阻塞原语 (即线程等待和唤醒的加强版) 为什么用? 一: Object 类中的wait和notify方法实现线程等待和唤醒的特点: 另一种模式: 结论: 二:Condition 接口中的await 和siganl 方法实现线程的等待和唤醒 总
阅读全文
摘要:什么是自旋锁 自旋锁的定义: 当一个线程尝试去获取某一把锁的时候,如果这个锁此时已经被别人获取(占用),那么此线程就无法获取到这把锁,该线程将会等待,间隔一段时间后会再次尝试获取。这种采用循环加锁 -> 等待的机制被称为自旋锁(spinlock)。 自旋锁的原理 自旋锁的原理比较简单,如果持有锁的线
阅读全文