91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中SimpleDateFormat線程不安全的示例分析

發布時間:2021-09-09 17:01:24 來源:億速云 閱讀:152 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“java中SimpleDateFormat線程不安全的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“java中SimpleDateFormat線程不安全的示例分析”這篇文章吧。

java.text.SimpleDateFormat主要負責日期的轉換與格式化。如:

java中SimpleDateFormat線程不安全的示例分析
編寫一個簡單的測試程序,如:

java中SimpleDateFormat線程不安全的示例分析

但是,在多線程的環境中,使用類java.text.SimpleDateFormat容易造成數據轉換及處理的不正確,因為該類并不是線程安全的。

我們可以從SimpleDateFormat類的javadoc描述中看到如下一句話:

 Date formats are not synchronized.

 It is recommended to create separate format instances for each thread.

 If multiple threads access a format concurrently, it must be synchronized externally.

Date formats沒有同步。

建議為每一個線程創建獨立的format對象。

如果多個線程并發訪問一個format,那么,一定要在外部實現同步(synchronized)。

也就是說,在多線程下我們需要做些額外的保護措施,去保證其正確處理,否則是不安全的。接下來,讓我們一起來看一下,多線程中到底會發生什么?

線程不安全示例

java中SimpleDateFormat線程不安全的示例分析

java中SimpleDateFormat線程不安全的示例分析

運行結果主要包含如下幾個錯誤:

  • 無異常,日期解析出現錯誤

java中SimpleDateFormat線程不安全的示例分析

  • 有異常,java.lang.NumberFormatException

如,

java中SimpleDateFormat線程不安全的示例分析

再如,

java中SimpleDateFormat線程不安全的示例分析

那么問題來了,如何保證運行正常呢?

解決方法

其實,從SimpleDateFormat的javadoc中已經看到有處理的方法了。

 Date formats are not synchronized.

 It is recommended to create separate format instances for each thread.

 If multiple threads access a format concurrently, it must be synchronized externally.

接下來,先從這個描述信息給出相關的解決方法。

(一)每次都新建SimpleDateFormat對象

改造SimpleDateFormatExample類,如:

java中SimpleDateFormat線程不安全的示例分析

執行上述Main.java類,得到正確結果:

java中SimpleDateFormat線程不安全的示例分析

(二) 訪問format時,添加synchronized

改造SimpleDateFormatExample類,如:

java中SimpleDateFormat線程不安全的示例分析

或者在使用format對象的方法前添加synchronized修飾,如:

java中SimpleDateFormat線程不安全的示例分析

同樣,執行上述Main.java類,可以得到正確結果:

java中SimpleDateFormat線程不安全的示例分析

(三)使用TheadLocal

改造SimpleDateFormatExample類,如:

java中SimpleDateFormat線程不安全的示例分析

同樣,執行上述Main.java類,可以得到正確結果:

java中SimpleDateFormat線程不安全的示例分析

(四)使用FastDateFormat

FastDateFormat類在Apache Common Langs包下面,

 該類是線程安全的

如果是Maven工程,其添加依賴包如下:

java中SimpleDateFormat線程不安全的示例分析

改造SimpleDateFormatExample類,如:

java中SimpleDateFormat線程不安全的示例分析

完整的類為:

java中SimpleDateFormat線程不安全的示例分析

同樣,執行上述Main.java類,可以得到正確結果:

java中SimpleDateFormat線程不安全的示例分析

(五)使用Joda Time

DateTimeFormatter 類Joda-Time包下面, 該類是線程安全的

如果是Maven工程,其添加依賴包如下:


java中SimpleDateFormat線程不安全的示例分析

改造SimpleDateFormatExample類,如:

java中SimpleDateFormat線程不安全的示例分析

同樣,執行上述Main.java類,可以得到正確結果:

java中SimpleDateFormat線程不安全的示例分析

以上是“java中SimpleDateFormat線程不安全的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莒南县| 通辽市| 米泉市| 禹城市| 德兴市| 慈溪市| 酉阳| 乐安县| 黑水县| 长乐市| 河北区| 县级市| 永安市| 张家界市| 清涧县| 拜泉县| 邵武市| 汨罗市| 县级市| 大方县| 岳普湖县| 盘山县| 高邑县| 黄骅市| 手机| 望奎县| 乌拉特中旗| 邓州市| 美姑县| 贵港市| 屏南县| 文安县| 德保县| 涿鹿县| 东源县| 京山县| 竹山县| 红桥区| 青岛市| 怀宁县| 龙江县|