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

网站制作appfba欧美专线

网站制作app,fba欧美专线,品牌设计的要求有哪些,c2c网站开设店铺目录 使用注解定义分布式锁 Aop例子 retention 表示在什么时候可以用,runtime表示在运行期可以用 target表示可以用在哪些上面 inherited表示可以被继承 切点和切面类 重点是 pjp.proceed(args) 这个就是执行目标方法,下面的这一段没啥意思 也可…

目录

使用注解定义分布式锁 


Aop例子

retention 表示在什么时候可以用,runtime表示在运行期可以用

target表示可以用在哪些上面  inherited表示可以被继承  

 切点和切面类

重点是 pjp.proceed(args) 这个就是执行目标方法,下面的这一段没啥意思

也可以直接把注解写在切面注解上,但是注解名必须写在方法的参数上,保持一致

使用注解定义分布式锁 

package com.tianji.promotion.utils;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyLock {String name();long waitTime() default 1;long leaseTime() default -1;TimeUnit unit() default TimeUnit.SECONDS;
}

没有传过期时间,默认是-1  过期时间是30秒,传了过期时间 看门狗会失效

如何保证先获取锁然后事务在执行呢,事务本身的顺序就是很靠后的如果确实不放心可以实现order方法 ,order越小 优先级越高

但是这个锁类型是写死的,如何根据传入锁类型参数的不同生成不同的锁对象呢?

锁类型的枚举
public enum MyLockType {RE_ENTRANT_LOCK, // 可重入锁FAIR_LOCK, // 公平锁READ_LOCK, // 读锁WRITE_LOCK, // 写锁;
}

 

 redission不同锁类型的工厂

工厂模式,根据参数不同获取不同的对象,function是方法引用,apply就是去执行他具体的方法

里面使用了一个枚举map,比hashmap效率高一些

package com.tianji.promotion.utils;import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;import java.util.EnumMap;
import java.util.Map;
import java.util.function.Function;import static com.tianji.promotion.utils.MyLockType.*;@Component
public class MyLockFactory {private final Map<MyLockType, Function<String, RLock>> lockHandlers;public MyLockFactory(RedissonClient redissonClient) {this.lockHandlers = new EnumMap<>(MyLockType.class);this.lockHandlers.put(RE_ENTRANT_LOCK, redissonClient::getLock);this.lockHandlers.put(FAIR_LOCK, redissonClient::getFairLock);this.lockHandlers.put(READ_LOCK, name -> redissonClient.getReadWriteLock(name).readLock());this.lockHandlers.put(WRITE_LOCK, name -> redissonClient.getReadWriteLock(name).writeLock());}public RLock getLock(MyLockType lockType, String name){return lockHandlers.get(lockType).apply(name);}
}

 如果看不懂 ,可以不用 拉姆达表达式,获取的时候还是apply方法

 

锁失败策略

多线程争抢锁,大部分线程会获取锁失败,而失败后的处理方案和策略是多种多样的。目前,我们获取锁失败后就是直接抛出异常,没有其它策略,这与实际需求不一定相符。

 

策略模式

根据不同的策略选择使用不同的策略 ,,工厂模式是生成不同的对象 

http://www.hkea.cn/news/867605/

相关文章:

  • dz网站建设器最近有新病毒出现吗
  • 个人网站制作说明香港旺道旺国际集团
  • 监控做直播网站免费网站seo
  • 网站建设洪塔网站搜索优化排名
  • 专业做设计师品牌网站深圳百度总部
  • 网站兼容工具seo关键词排名优化教程
  • O2O网站制作需要多少钱美区下载的app怎么更新
  • 上海做网站 公司做电商必备的几个软件
  • caozi.com网站建设中百度指数如何分析数据
  • 互联网舆情处置公司武汉seo外包平台
  • 消防器材网站建设背景seo工作职位
  • 专业网站制作公司名称seo咨询茂名
  • 做b2c网站建网站seo
  • 代理注册香港公司seo技术交流论坛
  • 想要提高网站排名应该怎么做seo网站推广费用
  • 专业做食材网站seo链接优化建议
  • 做画册的网站附近哪里有计算机培训班
  • 大兴建站推广google登录
  • 长春个人做网站哪家好百度指数热度榜
  • 嘉兴手机网站开发费用百度学术论文官网入口
  • 刷业务网站怎么做seo关键词挖掘
  • 企业移动网站品牌苏州网站外包
  • 网站建设流程 文档东莞seo技术
  • 公众号开发网站建设合同信息流广告投放流程
  • 长清网站建设费用友情链接出售平台
  • 先做网站再付款百度推广的广告真实可信吗
  • 湖南省人民政府一事一办企业网站seo排名优化
  • 深圳招聘网官方网站网站搜索引擎优化
  • 怎么知道一个网站是谁做的中国最大的企业培训公司
  • m2c是什么意思南昌百度seo