单独创建一张表存放获取锁所需的key和value,key值保持唯一,value从0开始按1递增,在代码中用私有成员变量ConcurrentHashMap存储每个key value值,初始化时每个线程的ConcurrentHashMap内容都一样,多线程执行时,先通过AtomicLong获取map中的值,然后根据value的旧值执行update,更新为新值,新值为旧值加一,更新成功返回影响行数为1的是得到锁的线程,同时更新所有线程中map中对应key的value,获取锁失败的线程需要与数据库中的value进行同步,否则会出现多线程永远获取锁失败的问题。
相关文章
- Dubbo2.7的Dubbo SPI实现原理细节
- 通过二次开发在SAP R/3中实现库存日清功能
- Diffusion扩散模型学习1——Pytorch搭建DDPM实现图片生成
- ASP.NET MVC应用程序实现下载功能和显示上传的图片
- python 单例实现
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
- Ionic4.x、Cordova Android 检测应用版本号、服务器下载文件以及实现App自动升级、安装
- from表单实现无跳转上传文件,接收页面后台数据
- Android锁屏状态下弹出activity
- C# 实现图片的放大缩小和平移