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

佛山制作做网站南宁定制建站

佛山制作做网站,南宁定制建站,怎样做网络推广为什么要做网络推广,成都网站建设加推广公司一:业务锁 在代码业务逻辑加锁,防止不同业务操作相同业务表导致数据错乱,设置锁进行等待。这里锁使用的是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/773383/

相关文章:

  • 网站程序开发的基本步骤图片编辑器免费
  • 鲜花店的网站建设接网站开发哪里好
  • 电商网站开发fd中山 灯饰 骏域网站建设专家
  • 学设计的视频网站引物在线设计网站
  • 自己做的网站访问不企业网站建设方案范文
  • 服务专业的网站建设服务华为认证培训机构排行榜
  • 新乡平原新区建设局网站高清服务器大全
  • 淘宝客怎么样做网站南京 网站建设 运营服务 骗子公司
  • 网站页面设计方案网站建设与推广的实训报告
  • 建筑图集网站南京seo优化培训
  • 北京专业网站优化做网站要注意什么
  • 学网站设计培训电话电商直播系统开发
  • 做网站切图尺寸工业网站素材
  • 哈尔滨大型网站设计公司网站建设四端一体
  • 怎么建网站站点wordpress 主页 慢
  • 我需要网站西安网站制作 西安彩铃400电话
  • 做微信公众号用什么网站免费网站托管平台
  • 枣强网站建设吉林网络推广代运营
  • 北京网站建设公司华网响应式网站用什么开发的
  • 酒店手机网站首页设计首饰设计网站大全
  • 做公司点评的网站wordpress 问答 api
  • 如何做盗版小说网站与传统营销相比网络营销的优势
  • 深圳网站建设seo推广优化工信部网站备案怎么登录
  • 中企网络科技建站哈尔滨手机建站模板
  • 网站毕设代做多少钱开源 网站源代码
  • 简单的介绍网站模板商城模板html
  • wordpress导航页面设置seo兼职论坛
  • 南京网站搭建鞍山网络
  • 自己怎么做网站网页wordpress导航站主题
  • 网站呼叫中心 建设工期wordpress包下载