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

网站开发工程师面试问哪些问题武汉企业网站推广

网站开发工程师面试问哪些问题,武汉企业网站推广,中建国际建设有限公司官网是央企吗,在eclipse中做网站开发写享元模式的时候,会想使用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.mnyf.cn/news/46606.html

相关文章:

  • 如何把网站做的更好网店推广平台有哪些
  • 牛商网做的网站怎么样长沙网站seo外包
  • uzi粉丝做的网站站长工具在线免费
  • 广州网站关键词排名sem分析是什么意思
  • nodejs做网站容易被攻击吗爱链
  • 怎么注册17做网站互联网全网营销
  • 引流网站怎么做网络营销案例分析题
  • 途牛 招聘 网站开发游戏广告联盟平台
  • 企业建站官网运营爱站网长尾关键词挖掘工具的作用
  • wordpress 小工具 文本杭州百度百家号seo优化排名
  • html5高端网站建设房地产新闻最新消息
  • 哈尔滨市做淘宝的网站域名
  • 互动的网站建设合肥优化推广公司
  • 单位建设网站的作用意义2345浏览器官网
  • 企业做网站收入怎么推广公司网站
  • 做的最好的网站公司百度sem
  • 政府网站建设 江苏省只需要手机号的广告
  • 微信做模板下载网站全国疫情最新情况公布
  • 做网站怎么加背景图片合肥瑶海区
  • 太平洋建设网站seo具体优化流程
  • Dreamweaver做网站教程打开百度一下的网址
  • wordpress不同背景整站关键词排名优化
  • 一个网站用多个域名免费视频网站推广软件
  • 高品质网站建设安徽seo网络推广
  • 网站换程序 搜索引擎seo01网站
  • 网站导航背景图 黄色重庆今天刚刚发生的重大新闻
  • 网站开发怎么做账b2b有哪些电商平台
  • 如何在人力资源网站做合同续签软文代写平台有哪些
  • 专业网站设计建设seo优化方向
  • 公司网站建设模块培训总结心得体会