麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
586
2023-04-06
Java分布式:分布式锁之数据库实现
Java分布式:分布式锁之数据库实现
分布式锁系列教程重点分享锁实现原理
锁实现原理
创建一张名为methodLock的数据库表,为方法名字段(method_name)添加唯一性约束。
CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `method_name` varchar(64) NOT NULL DEFAULT '' COMMENT '锁定的方法名', `desc` varchar(1024) NOT NULL DEFAULT '备注信息', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '保存数据时间,自动生成', PRIMARY KEY (`id`), UNIQUE KEY `uidx_method_name` (`method_name `) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='锁定中的方法';
每次访问方法前,都执行插入操作:
insert into methodLock(method_name,desc) values (‘method_name’,‘desc’)
一旦插入成功,即认为此线程上锁成功,若插入失败,可执行while语句,在最大等待时间内,持续尝试插入。
当方法执行完业务操作以后,执行DELETE语句,即视为放弃锁,让其他线程竞争锁资源。
delete from methodLock where method_name ='method_name'
图解
参考资料
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。