当前位置: 首页 > news >正文

网络优化网站 site哪家装修公司比较好的

网络优化网站 site,哪家装修公司比较好的,应用市场app,上海网站建设服一:业务锁 在代码业务逻辑加锁,防止不同业务操作相同业务表导致数据错乱,设置锁进行等待。这里锁使用的是ReentrantLock。详细的介绍可以参考: https://blog.csdn.net/jerry11112/article/details/112375167 Slf4j public class…

一:业务锁

在代码业务逻辑加锁,防止不同业务操作相同业务表导致数据错乱,设置锁进行等待。这里锁使用的是ReentrantLock。详细的介绍可以参考:
https://blog.csdn.net/jerry11112/article/details/112375167

@Slf4j
public class MyLock {private static ConcurrentHashMap<Long, ReentrantLock> reenTranLock = new ConcurrentHashMap<>();/*** 业务加锁* @param businessId        业务id* @param lockCode          需要加锁的代码,执行完后自动解锁* @param timeOutSeconds    锁超时时间* @return**/public static <T> T lockAndUnLock(Long businessId, Supplier<T> lockCode, long timeOutSeconds) {try {//可重入公平锁:true-公平锁,false-非公平锁ReentrantLock lock = reenTranLock.putIfAbsent(businessId, new ReentrantLock(true));lock = lock != null ? lock : reenTranLock.get(businessId);//超时加锁,单位秒boolean lockSuccess = lock.tryLock(timeOutSeconds, TimeUnit.SECONDS);if (lockSuccess) {try {return lockCode.get();} catch (Exception ex) {throw ex;} finally {//解锁lock.unlock();}} else {throw new Exception("操作失败");}} catch (Exception ex) {if (ex instanceof IllegalStateException) {throw new IllegalStateException(ex.getMessage());}throw new RuntimeException(ex);}}/*** 加锁和解锁默认60S超时* @param businessId    业务id* @param lockCode      需要加锁的代码,执行完后自动解锁* @return**/public static <T> T lockAndUnLock(Long businessId, Supplier<T> lockCode) {return lockAndUnLock(businessId, lockCode, 60);}public static void main(String[] args) {Boolean a = lockAndUnLock(1L, () -> {String aaa = "111111";return true;});System.out.println(a);}
}

二:定时任务锁

当多个负载服务同时启用相同程序定时任务,需加上分布式锁,这里使用的是redis加锁。

@Slf4j
public class TaskTest {@Autowiredprivate RedisTemplate redisTemplate;@Scheduled(cron = "0 0/10 * * * ?")public void task() {//redis key名称String redisKey = "test".concat(":").concat(this.getClass().getSimpleName()).concat("task");//加上redis锁,适应分布式场景boolean setOk = redisTemplate.opsForValue().setIfAbsent(redisKey, redisKey, 10, TimeUnit.SECONDS);  //单位秒:根据不同的业务处理,自行设置大小时间if (!setOk) {log.info(redisKey + "任务已执行");return;}try {//业务逻辑处理.....} catch (Exception ex) {log.error("定时任务异常", ex.getMessage());} finally {//手动解锁redisTemplate.delete(redisKey);}}
}
http://www.yayakq.cn/news/872475/

相关文章:

  • 怎么查一个网站的服务器是在国内还是国外上海建设银行网站查询余额
  • 昆明广告网站制作新软件推广
  • 信用泰安网站wordpress 博客主题
  • 做移动网站优化软件台州关键词优化价格
  • 舟山建设技术学校网站首页wordpress 免邮箱注册
  • 东莞网站建设服务商品牌建设的内容
  • 长沙建设局网站网站3级目录可以做导航分类么
  • 网站建设教程pdf下载指数基金怎么选
  • 未备案的网站 访问 hots广州市手机网站建设品牌
  • 百度站长平台官网死链提交网站建设 配资
  • 惠州悦商做网站兰州市城乡建设及网站
  • 网站建设买了服务器后怎么做海外推广
  • 手机网站制作天强科技网站上的html内容怎么修改
  • 北京网站开发公司一网天行安远县建设局网站
  • 怎么做扫二维码登陆网站网络工程公司如何接单
  • 广州网站建设免费个人网站制作多少钱
  • 无锡工程建设招标网站wordpress增加logo
  • 手机移动端网站是什么公司注册公司需要什么资料
  • mil后缀网站深圳注册公司补贴政策
  • 做网站需要软件织梦发布网站
  • 信息型网站建设的目的定位仓库管理系统erp
  • 北京大湖建设工程有限公司网站南宁世尊商贸网站建设
  • 临沂网站建设模板设计制作长方体形状的包装纸盒视频
  • 广州番禺营销型网站建设柳州网站建设psn118
  • 人力资源网站模板wordpress 作者函数
  • 你们需要网站建设宁波网站建设设计方案
  • 百度知道登录长沙网站seo外包
  • 网站seo课设网站开发实战asp制作视频
  • 音乐网站设计centos7.2做网站
  • 苏州专业做网站公司有哪些正确认识部门网站建设