关于 refreshLocalSeqId 方法是否存在并发问题?
来源:4-22 分布式id生成器-无序id的生成

慕少4057723
2024-02-02
refreshLocalSeqId代码中
假设两个线程 (线程1 和 线程2)都执行到这个if 判断 ,并且结果都为true
if (localSeqIdBO.getCurrentNum().get() - localSeqIdBO.getCurrentStart() > step * UPDATE_RATE) {
然后程序按照如下顺序进行执行代码:
线程1 先执行 semaphore.tryAcquire()
异步开启线程3 去异步占用id段
线程3 执行semaphore.release
线程2 又会去执行 semaphore.tryAcquire()
此后又会异步异步占用id段
这样是否还是会出现会连续占用两次id 段的问题呢 ?
写回答
1回答
-
Danny_Idea
2024-02-03
不会,底层数据库那块还做了一个乐观锁
012024-02-03
相似问题