zoukankan      html  css  js  c++  java
  • Java线程静态在对象缓存中的妙用

         线程静态在对象缓存中的妙用由广州疯狂软件教育java培训分享:

      线程静态标记静态字段的值对于每个线程都是唯一的。简单来说,是只应用在静态字段上,而且对于每一个线程都是独立存储的。

      那么,结合对象缓存来说,需求如下:

      1、一些工具类,需要占用一定资源,但又不希望太频繁的创建该工具类。

      2、需要适应多线程的情况

      一个例子就是StringBuilder类,StringBuilder类内部实现使用了char[]来存储字符,我们需要使用StringBuilder来创建字符串,而且希望不太频繁的创建它,避免内存压力。

      下面,就是。NET Framework 4.5.1 中对StringBuilderCache的实现:

      internal static class StringBuilderCache{

      private const int MAX_BUILDER_SIZE = 360;

      [ThreadStatic]

      private static StringBuilder CachedInstance;

      public static StringBuilder Acquire(int capacity = StringBuilder.DefaultCapacity){

      if(capacity <= MAX_BUILDER_SIZE){

      StringBuilder sb = StringBuilderCache.CachedInstance;

      if (sb != null){

      if(capacity <= sb.Capacity){

      StringBuilderCache.CachedInstance = null;

      sb.Clear();

      return sb;

      }

      }

      }

      return new StringBuilder(capacity);

      }

      public static void Release(StringBuilder sb){

      if (sb.Capacity <= MAX_BUILDER_SIZE){

      StringBuilderCache.CachedInstance = sb;

      }

      }

      public static string GetStringAndRelease(StringBuilder sb){

      string result = sb.ToString();

      Release(sb);

      return result;

      }

      }

      疯狂软件教育中心依托开发团队的强大技术实力,把企业最新技术融入实训课程,打造金牌的品质,才能给予学员黄金的未来,疯狂软件凭借过硬的技术实力与丰富的项目开发经验,赢得了社会的肯定。疯狂软件Java培训师资力量强大,课程内容深入,为学员高薪就业做了很好的铺垫,拥有丰富就业指导经验的就业团队也成为了学员高薪就业的先天优势。地址:广州天河区车陂沣宏大厦3楼。

      疯狂Java在前几年的培训过程中,凭借自身强悍的师资、一流的课程、真实的项目、超高的就业率已经让广大南方学子成功走上软件工程师职业道路。大量毕业即失业的学子已通过疯狂Java实现了就业。

  • 相关阅读:
    pymongo中的连接操作:Connection()与MongoClient()
    Dynamics CRM2016 新功能之从CRM APP通过电子邮件发送页面链接
    [开发工具]_[Sublime Text 2]_[配置C++编译执行环境]
    struts2 全局拦截器,显示请求方法和參数
    A. Polo the Penguin and Strings
    linux驱动之LED驱动_1
    dbgrid控件如何能在左边显示行号?
    软件提示“没有活动事务”原因以及解决办法
    刷新dbgrid 而不失去当前行位置
    用ClientDataSet更新数据表,怎样自动生成行号? [问题点数:40分]
  • 原文地址:https://www.cnblogs.com/gojava/p/3656137.html
Copyright © 2011-2022 走看看