crossoverJie / JCSprout

👨‍🎓 Java Core Sprout : basic, concurrent, algorithm
https://crossoverjie.top/JCSprout
MIT License
27.08k stars 7.08k forks source link

对锁的一些认知有那些所的疑问 #175

Open yngil opened 5 years ago

yngil commented 5 years ago

在表中加入一个同步状态字段,每次获取锁的是加 1 ,释放锁的时候-1,当状态为 0 的时候就删除这条记录,即释放锁。

实现重入锁时,并不能区分当前线程是否就是锁的持有者

insert into `t_lock`(`id`,`count`) values(1,1); 
update `t_lock` set `count` = `count`-1 where `id` = 1 and `count`>0;
honwhy commented 4 years ago

实现重入锁的话要多加字段吧

AT-Fieldless commented 4 years ago

感觉要加上两个字段表示机器名和线程名。

顺便我觉得这句话

每次获取锁的是加 1

是不是应该改成

每次获取锁的时候加1

crossoverJie commented 4 years ago

欢迎提交 pr 来修复这个问题。

honwhy commented 4 years ago

我也期待这个pr