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

网站开发中 视频播放卡淘宝美工培训

网站开发中 视频播放卡,淘宝美工培训,wordpress topnews,网站首页排版写享元模式的时候,会想使用ConcurrentHashMap来保证并发,没有使用双重锁会不会有问题?但是在synchronize代码块里面需要尽量避免throw异常,希望有经验的同学能够给出解答? 1月6号补充:没有使用双重锁会有问…

写享元模式的时候,会想使用ConcurrentHashMap来保证并发,没有使用双重锁会不会有问题?但是在synchronize代码块里面需要尽量避免throw异常,希望有经验的同学能够给出解答?

1月6号补充:没有使用双重锁会有问题

享元模式UML图如下:
在这里插入图片描述

@Component
public class PayContextFactory extends AbstractPayContextFactory<PayContext> {//享元模式private static final Map<String, PayContext> payContexts = new ConcurrentHashMap<>();@Overridepublic PayContext getContext(Integer payType) {StrategyEnum strategyEnum =payType == 1 ? StrategyEnum.alipay :payType == 2 ? StrategyEnum.wechat :null;if (Objects.isNull(strategyEnum)) {throw new UnsupportedOperationException("payType not supported!");}//尝试从map中获取ContextPayContext context = payContexts.get(strategyEnum.name());//第一次调用if (Objects.isNull(context)) {try {//通过反射,创建具体类PayStrategyInterface payStrategy = (PayStrategyInterface) Class.forName(strategyEnum.getValue()).newInstance();//将具体策略类作为入参,创建payContextPayContext payContext = new PayContext(payStrategy);payContexts.put(strategyEnum.name(), payContext);} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {throw new UnsupportedOperationException("get strategy failed!");}}return payContexts.get(strategyEnum.name());}
}

使用双重检查锁后的代码

@Component
public class PayContextFactory extends AbstractPayContextFactory<PayContext> {//享元模式private static final Map<String, PayContext> payContexts = new ConcurrentHashMap<>();@Overridepublic PayContext getContext(Integer payType) {StrategyEnum strategyEnum =payType == 1 ? StrategyEnum.alipay :payType == 2 ? StrategyEnum.wechat :null;if (Objects.isNull(strategyEnum)) {throw new UnsupportedOperationException("payType not supported!");}//尝试从map中获取ContextPayContext context = payContexts.get(strategyEnum.name());//第一次调用if (Objects.isNull(context)) {synchronized (payContexts) {context = payContexts.get(strategyEnum.name());if (Objects.isNull(context)) {try {//通过反射,创建具体类PayStrategyInterface payStrategy = (PayStrategyInterface) Class.forName(strategyEnum.getValue()).newInstance();//将具体策略类作为入参,创建payContextPayContext payContext = new PayContext(payStrategy);payContexts.put(strategyEnum.name(), payContext);} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {throw new UnsupportedOperationException("get strategy failed!");}}}}return payContexts.get(strategyEnum.name());}
}
http://www.tj-hxxt.cn/news/40252.html

相关文章:

  • 五金表带厂东莞网站建设网页设计与制作软件有哪些
  • 做的网站怎么放在网上搜索引擎营销的实现方法有哪些
  • 山西 网站制作培训心得体会怎么写
  • 宜宾网站建设略奥网络网络舆情监测平台
  • 做网站后台的时候要注意什么周口网络推广哪家好
  • php做网站需要注意什么国内免费ip地址
  • 做网站哪种编程语言最好南昌seo网站排名
  • 重庆网站建设公司有哪些外贸平台app
  • 网站做整合页面网站开发流程
  • wordpress搭建子網站可以推广发广告的app
  • 宜春做网站哪里好seo关键词优化如何
  • 做阿里巴巴网站需要多少钱绍兴seo排名公司
  • 嘉兴网站建议seo com
  • 一个网站多个域名备案小程序开发流程
  • 做网站要花多少钱h5下一页
  • 创建全国文明城市简报重庆seo搜索引擎优化优与略
  • 做网站专业公司百度搜题在线使用
  • 美食网站程序免费的行情网站app
  • 简述织梦网站上传及安百度 营销推广靠谱吗
  • 黑龙省建设厅网站首页2022世界足球排行榜
  • seo怎么做优化方案抖音seo搜索优化
  • 大连建设厅网站代写文案的软件
  • 软件网站怎么做的牛排seo
  • 用php源码如何建设网站如何让别人在百度上搜到自己公司
  • cs如何做全屏网站北京网站建设公司
  • 做简历做得好的网站360竞价推广登录入口
  • 自己怎么做优惠搜网站自己做网站怎么做
  • 做门户网站价格公司搭建网站
  • 网站优化http:www.seo668.cnseo十大营销策略
  • 评价一个网站设计项目的好坏项目营销策划方案