亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java SimpleDateFormat線程安全問(wèn)題原理詳解

瀏覽:7日期:2022-09-01 17:25:49

今天百度一些資料偶然發(fā)現(xiàn)SimpleDateFormat居然不是線程安全的,平時(shí)使用時(shí)根本沒(méi)有考慮,萬(wàn)幸今天發(fā)現(xiàn)了這個(gè)問(wèn)題,得把寫的代碼得翻出來(lái)整理一下了。

一般我們使用的SimpleDateFormat一般是這樣寫的:

public void method() { ... DateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); Date date = dateFormat.parse('2020-05-10 19:53:00'); ...}

這樣寫完全沒(méi)有任何問(wèn)題,但我們有時(shí)候會(huì)覺(jué)得重復(fù)創(chuàng)建SimpleDateFormat耗費(fèi)性能,就想到把SimpleDateFormat對(duì)象做為類的靜態(tài)成員變量,那么代碼就是這樣了:

private static final DateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss');public void method() { ... Date date = dateFormat.parse('2020-05-10 19:53:00'); ...}

我經(jīng)常在Controller做日期轉(zhuǎn)換的時(shí)候就是這么干的,但這樣寫很有問(wèn)題,多線程通知執(zhí)行容易出問(wèn)題,要么轉(zhuǎn)換后的結(jié)果不對(duì),要么報(bào)錯(cuò),我們測(cè)試一下:

public class DateUtils { private static final DateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); public static Date prase(String date) throws ParseException { return dateFormat.parse(date); } static class Job extends Thread { @Override public void run() { try {System.out.println(this.getName() + ':' + DateUtils.prase('2020-05-10 19:53:00')); } catch (ParseException e) { } } } public static void main(String[] args) { for (int i = 0; i < 10; i++) { new Job().start(); } }}

測(cè)試結(jié)果如下:

Java SimpleDateFormat線程安全問(wèn)題原理詳解

那有沒(méi)有好的解決方案呢,既不用重復(fù)創(chuàng)建對(duì)象,又保證線程安全呢?答案是有。

方法一:使用ThreadLocal

public class MyController { private static ThreadLocal<DateFormat> local = new ThreadLocal<DateFormat>() { protected DateFormat initialValue() { return new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); }; }; public void method() { ... Date date = local.get().parse('2020-05-10 19:53:00'); ... }}

方法二:使用第三方apache提供工具包c(diǎn)ommons-lang3

import org.apache.commons.lang3.time.FastDateFormat;public class MyController { public void method() { ... Date date = FastDateFormat.getInstance('yyyy-MM-dd HH:mm:ss').parse('2020-05-10 19:53:00'); ... }}

推薦使用第二種,既快有方便。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 香蕉亚洲精品一区二区 | 加勒比一区二区 | 欧美人成a视频www | 欧美激情视频一区二区免费 | 99精品在线观看 | 成人在线视频一区 | 在线看片 在线播放 | 91青草久久久久久清纯 | 国产精品99在线观看 | 99精品久久久久久久 | 欧美一级欧美三级 | 欧美成人综合 | 天天se天天cao综合网蜜芽 | 欧美二级在线观看免费 | 露脸国产野战最新在线视频 | 国产女厕偷窥系列在线视频 | 国产男女爽爽爽爽爽视频 | 三级黄色高清视频 | 顶级毛片在线手机免费看 | 国产草草影院 | 日韩在线一区二区三区视频 | 国产精品成人免费视频 | 99视频在线精品 | 亚洲专区视频 | 在线一区免费视频播放 | 大尺度福利视频奶水在线 | 在线观看视频中文字幕 | 在线观看免费为成年视频 | 男女午夜24式免费视频 | 国内精品久久久久久网站 | 亚洲第一网色综合久久 | 亚洲天堂一区二区在线观看 | 午夜三级成人三级 | 免费看成人www的网站软件 | 精品久久一区二区三区 | 精品96在线观看影院 | 18videosex性欧美69 | 国产高清精品毛片基地 | 久久精品国产99久久香蕉 | 国产精品亚洲一区二区在线观看 | 中文字幕日本一区波多野不卡 |