
线程
醉死梦红尘丶
学学代码,写写代码
展开
-
集群高并发下如何保证分布式唯一全局id生成
集群高并发下如何保证分布式唯一全局id生成? id生成规则部分硬性要求: 全局唯一 趋势递增 单调递增 信息安全 含时间戳 id生成系统的可用性要求: 高可用 低延迟 高qps 一般通用方案UUID(只有唯一性) UUID.randoomUUID().toString()(不推荐) 无序,无法预测她的生成顺序,不能生成递增有序的数字 主键,id作为主键时再特定的环境会存在一些问题。 索引,B+树索引的分裂 小厂使用mysql:唯一性,递增(不适合) replace into id自增 分布式里原创 2020-12-12 12:36:26 · 353 阅读 · 1 评论 -
读写锁实现缓存的简单入门
ReadWirteLock 使用场景:为了提高效率,将业务差分,精确加锁,提高效率 读写锁:ReadWriteLock lock=new ReentrantReadWriteLock(); 获取读锁: Lock lock = this.lock.writeLock(); 获取写锁: Lock lock = this.lock.readLock(); 效果:读读共享,读写不共享,写写互斥 写锁:独占锁 读锁:共享锁 public class ReadWirteLockDemo { public sta原创 2020-09-05 15:14:47 · 212 阅读 · 0 评论 -
线程常用辅助工具类快速入门
简述 countDownLatch:类似减法计数器,给计数器一个初始值,当运行一个线程给他计数器值减一( countDownLatch.countDown();),当计数器归零,唤醒 await()线程。 适用场景:当需要其他线程执行一定数量时,在执行的任务; CyclicBarrier:类似加法计数器,给计数器一个初始值,当(cyclicBarrier.await();)等待线程数量够初始值数量时,开启线程; 适用场景:需要多个线程同时执行时 Semaphone:类似与抢车位,同一时间只能有指原创 2020-09-05 11:54:11 · 202 阅读 · 0 评论