电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Java SimpleDateFormat線程安全問題原理詳解

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

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

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

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

這樣寫完全沒有任何問題,但我們有時候會覺得重復創(chuàng)建SimpleDateFormat耗費性能,就想到把SimpleDateFormat對象做為類的靜態(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)換的時候就是這么干的,但這樣寫很有問題,多線程通知執(zhí)行容易出問題,要么轉(zhuǎn)換后的結(jié)果不對,要么報錯,我們測試一下:

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(); } }}

測試結(jié)果如下:

Java SimpleDateFormat線程安全問題原理詳解

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

方法一:使用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提供工具包commons-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'); ... }}

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 广东机电安装工程_中央空调工程_东莞装饰装修-广东粤标建设有限公司 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 雪花制冰机(实验室雪花制冰机)百科 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 手持式浮游菌采样器-全排二级生物安全柜-浙江孚夏医疗科技有限公司 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 广东泵阀展|阀门展-广东国际泵管阀展览会| 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 食安观察网| hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 天助网 - 中小企业全网推广平台_生态整合营销知名服务商_天助网采购优选 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 五轴加工中心_数控加工中心_铝型材加工中心-罗威斯 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 |