最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java ThreadLocal 線程安全問(wèn)題解決方案

 更新時(shí)間:2016年09月30日 14:35:13   作者:夏中偉  
這篇文章主要介紹了Java ThreadLocal 線程安全問(wèn)題解決方案的相關(guān)資料,需要的朋友可以參考下

一、線程安全問(wèn)題產(chǎn)生的原因

線程安全問(wèn)題都是由全局變量及靜態(tài)變量引起的

二、線程安全問(wèn)題

SimpleDateFormate sdf = new SimpleDateFormat();使用sdf.parse(dateStr);sdf.format(date);在sdf內(nèi)有一個(gè)對(duì)Caleadar對(duì)象的引用,在源碼sdf.parse(dateStr);源碼中calendar.clear();和calendar.getTime(); // 獲取calendar的時(shí)間

如果 線程A 調(diào)用了 sdf.parse(), 并且進(jìn)行了 calendar.clear()后還未執(zhí)行calendar.getTime()的時(shí)候,線程B又調(diào)用了sdf.parse(), 這時(shí)候線程B也執(zhí)行了sdf.clear()方法, 這樣就導(dǎo)致線程A的的calendar數(shù)據(jù)被清空了;

ThreadLocal是使用空間換時(shí)間,synchronized是使用時(shí)間換空間

使用ThreadLocal解決線程安全:

public class ThreadLocalDateUtil {
  private static final String date_format = "yyyy-MM-dd HH:mm:ss";
  private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>();
 
  public static DateFormat getDateFormat() 
  { 
    DateFormat df = threadLocal.get(); 
    if(df==null){ 
      df = new SimpleDateFormat(date_format); 
      threadLocal.set(df); 
    } 
    return df; 
  } 
  public static String formatDate(Date date) throws ParseException {
    return getDateFormat().format(date);
  }
  public static Date parse(String strDate) throws ParseException {
    return getDateFormat().parse(strDate);
  } 
}

使用synchronized解決方案:

public class DateSyncUtil {
  private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
  public static String formatDate(Date date)throws ParseException{
    synchronized(sdf){
      return sdf.format(date);
    } 
  }
   
  public static Date parse(String strDate) throws ParseException{
    synchronized(sdf){
      return sdf.parse(strDate);
    }
  }
}

感謝閱讀本文,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • java基礎(chǔ)之反射和泛型以及注解

    java基礎(chǔ)之反射和泛型以及注解

    這篇文章主要介紹了 java基礎(chǔ)之反射和泛型以及注解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java程序中Doc文檔注釋示例教程

    Java程序中Doc文檔注釋示例教程

    這篇文章主要為大家介紹了Java程序中Doc文檔注釋的示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Java設(shè)計(jì)模式常用的七大原則總結(jié)

    Java設(shè)計(jì)模式常用的七大原則總結(jié)

    今天給大家總結(jié)了Java設(shè)計(jì)模式的七大原則,主要有單一職責(zé)原則,接口隔離原則,依賴倒轉(zhuǎn)原則,里氏替換原則等,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Java判空的一些常見(jiàn)方法

    Java判空的一些常見(jiàn)方法

    這篇文章主要給大家分享介紹了Java判空的一些常見(jiàn)方法,在程序中必須進(jìn)行嚴(yán)格的判空處理,避免對(duì)空對(duì)象的異常操作,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Spring Boot集成Thymeleaf的方法

    Spring Boot集成Thymeleaf的方法

    這篇文章主要介紹了Spring Boot集成Thymeleaf的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Mybatis結(jié)果集自動(dòng)映射的實(shí)例代碼

    Mybatis結(jié)果集自動(dòng)映射的實(shí)例代碼

    在使用Mybatis時(shí),有的時(shí)候我們可以不用定義resultMap,而是直接在<select>語(yǔ)句上指定resultType。這個(gè)時(shí)候其實(shí)就用到了Mybatis的結(jié)果集自動(dòng)映射,下面通過(guò)本文給大家分享Mybatis結(jié)果集自動(dòng)映射的實(shí)例代碼,一起看看吧
    2017-02-02
  • 如何獲得spring上下文的方法總結(jié)

    如何獲得spring上下文的方法總結(jié)

    這篇文章主要介紹了如何獲得spring上下文的方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 解析ConcurrentHashMap: transfer方法源碼分析(難點(diǎn))

    解析ConcurrentHashMap: transfer方法源碼分析(難點(diǎn))

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見(jiàn)問(wèn)題---ConcurrentHashMap知識(shí),一起看看吧
    2021-06-06
  • Spring你不知道的一種解耦模式

    Spring你不知道的一種解耦模式

    本文介紹一種方法,服務(wù)定位模式Service?Locator?Pattern來(lái)解決,它幫助我們消除緊耦合實(shí)現(xiàn)及其依賴性,并提出將服務(wù)與其具體類解耦
    2023-01-01
  • Spring?Boot?使用斷言讓你的代碼在上線前就通過(guò)“體檢”(最新整理)

    Spring?Boot?使用斷言讓你的代碼在上線前就通過(guò)“體檢”(最新整理)

    斷言是一種編程技巧,用于在代碼中插入檢查點(diǎn),驗(yàn)證程序的狀態(tài)是否符合預(yù)期,如果斷言失敗,程序會(huì)拋出一個(gè)錯(cuò)誤,幫助你快速發(fā)現(xiàn)和修復(fù)bug,本文給大家介紹Spring?Boot?斷言:讓你的代碼在上線前就通過(guò)“體檢”,感興趣的朋友一起看看吧
    2025-03-03

最新評(píng)論

安庆市| 福建省| 馆陶县| 南投县| 漳平市| 体育| 三原县| 河池市| 怀柔区| 区。| 临高县| 永兴县| 顺平县| 仙游县| 广丰县| 泸水县| 奇台县| 调兵山市| 平塘县| 嘉荫县| 东乌珠穆沁旗| 开鲁县| 蚌埠市| 西青区| 于都县| 砚山县| 富源县| 普安县| 祁阳县| 云和县| 明溪县| 始兴县| 宣武区| 保亭| 张家川| 疏附县| 洛南县| 手游| 江永县| 新郑市| 交口县|