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

ico加网站黄冈市建设信息网站

ico加网站,黄冈市建设信息网站,有哪些做壁纸的网站,织梦网站移动化guava 并发编写并发Java应用程序时最令人讨厌的问题之一是对线程之间共享的资源的处理#xff0c;例如Web应用程序的会话和应用程序数据。 结果#xff0c;如果应用程序的并发级别很低#xff0c;许多开发人员选择根本不同步这些资源。 例如#xff0c;不太可能同时访问会话… guava 并发 编写并发Java应用程序时最令人讨厌的问题之一是对线程之间共享的资源的处理例如Web应用程序的会话和应用程序数据。 结果如果应用程序的并发级别很低许多开发人员选择根本不同步这些资源。 例如不太可能同时访问会话资源如果请求周期在短时间内完成则在第一个请求周期仍在进行时用户不太可能使用第二个浏览器选项卡发送并发请求。 随着Ajax驱动的Web应用程序的兴起这种信任方法的确变得越来越危险。 在Ajax应用程序中例如用户可以在另一个浏览器窗口中启动类似任务时请求完成一项较长时间的任务。 如果这些任务访问或写入会话数据则需要同步此类访问。 否则您将面临细微的错误甚至会遇到安全问题例如本博客文章中指出的那样 。 Java的synced关键字是引入锁的一种简单方法。 例如此示例仅在需要将新实例写入会话时才阻塞请求周期的线程。 HttpSession session request.getSession(true); if (session.getAttribute(shoppingCart) null) {synchronize(session) {if(session.getAttribute(shoppingCart) null) {cart new ShoppingCart();session.setAttribute(shoppingCart);}} } ShoppingCart cart (ShoppingCart)session.getAttribute(shoppingCart); doSomethingWith(cart); 此代码会将新的ShoppingCart实例添加到会话中。 每当找不到购物车时该代码将获取当前用户会话的监视器并将新的ShoppingCart添加到当前用户的HttpSession中。 但是此解决方案具有以下缺点 每当通过与上述相同的方法将任何值添加到会话中时任何正在访问当前会话的线程都将阻塞。 当两个线程尝试访问不同的会话值时也会发生这种情况。 这将使应用程序的限制更加严格。 Servlet API实现可能选择实现HttpSession而不是一个单例实例。 在这种情况下整个同步将失败。 但是这不是Servlet API的常见实现。 最好找到一个要与HttpSession实例进行同步的对象。 但是创建此类对象并在不同线程之间共享它们会带来相同的问题。 避免这种情况的一种好方法是使用既固有并发又允许使用弱键的Guava缓存 LoadingCacheString, Object monitorCache CacheBuilder.newBuilder().weakValues().build(new CacheLoaderString, Object{public Object load(String key) {return new Object();}}); 现在我们可以像这样重写锁定代码 HttpSession session request.getSession(true); Object monitor ((LoadingCacheString,Object)session.getAttribute(cache)).get(shoppingCart); if (session.getAttribute(shoppingCart) null) {synchronize(monitor) {if(session.getAttribute(shoppingCart) null) {cart new ShoppingCart();session.setAttribute(shoppingCart);}} } ShoppingCart cart (ShoppingCart)session.getAttribute(shoppingCart); doSomethingWith(cart); Guava缓存是自填充的将仅返回一个Monitor Object实例该实例可用作对共享会话资源的锁定该资源由shoppingCart普遍标识。 Guava缓存由ConcurrentHashMap支持该ConcurrentHashMap通过仅在映射键的哈希值存储桶上进行同步来避免同步。 结果使应用程序成为线程安全的而不会全局阻止它。 另外您不必担心内存不足因为如果不再使用监视器和相关的缓存条目则会被垃圾回收。 如果您不使用其他缓存甚至可以考虑使用软引用来优化运行时间。 当然可以完善这种机制。 例如除了返回Object实例之外还可以返回ReadWriteLock。 同样在会话启动时实例化LoadingCache也很重要。 例如这可以通过HttpSessionListener实现。 参考 My Daily Java博客上的JCG合作伙伴 Rafael Winterhalter提供的Guava使用并发应用程序的基于对象的微锁定 。 翻译自: https://www.javacodegeeks.com/2013/12/object-based-micro-locking-for-concurrent-applications-by-using-guava.htmlguava 并发
http://www.zqtcl.cn/news/836920/

相关文章:

  • 网站建设挣钱班级介绍网页制作模板
  • 工作室 网站建设app公司
  • 自己做的网站怎么在百度搜索到网页制作论文3000字
  • 如何网站托管中国跨境电商平台有多少
  • 手机p2p网站做平面设计兼职的网站有哪些
  • 贵金属网站建设唐山网站制作工具
  • 网站入门成都网站制作沈阳
  • 接做网站单子的网站做网站要会那些ps
  • 做盗市相关网站wordpress速度优化简书
  • 贵阳手机网站建设公司国内永久免费云服务器
  • 温州做网站定制哪家网络推广公司好
  • 招聘网站怎么做线下活动网站后台管理系统怎么开发
  • 西湖区外贸网站建设商梦建站
  • 网站首页设计注意斗蟋蟀网站建设
  • 石家庄网站建设远策科技网站建设公司人员配备
  • 手机怎么建网站链接专门做鞋子的网站吗
  • 网站建设设计作品怎么写网站建设 网站内容 采集
  • 自己做网站nas如何做网站大图片
  • 网站优化定做嘉兴模板建站代理
  • 南宁做网站比较好的公司有哪些花乡科技园区网站建设
  • 网站注册平台怎么注册申请空间 建立网站吗
  • 汕头住房与城乡建设网站做网站视频 上传到哪儿
  • 东莞网站关键词优化福建个人网站备案
  • 国外获奖flash网站泉州网站制作专业
  • 万网域名注册后如何做网站教学上海app开发和制作公司
  • 恩施网站建设公司个人网站怎么制作成图片
  • 泸州高端网站建设公司上海企业网站
  • wordpress 建站 知乎济南全包圆装修400电话
  • 织梦建设两个网站 视频影视公司宣传片
  • 北京小企业网站建设那个做网站好