欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

鄂倫春網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

java.text.SimpleDateFormat主要負(fù)責(zé)日期的轉(zhuǎn)換與格式化。如:

java中SimpleDateFormat線程不安全的示例分析
編寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試程序,如:

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

但是,在多線程的環(huán)境中,使用類java.text.SimpleDateFormat容易造成數(shù)據(jù)轉(zhuǎn)換及處理的不正確,因?yàn)樵擃惒⒉皇蔷€程安全的。

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

 Date formats are notsynchronized.

 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沒(méi)有同步。

建議為每一個(gè)線程創(chuàng)建獨(dú)立的format對(duì)象。

如果多個(gè)線程并發(fā)訪問(wèn)一個(gè)format,那么,一定要在外部實(shí)現(xiàn)同步(synchronized)。

也就是說(shuō),在多線程下我們需要做些額外的保護(hù)措施,去保證其正確處理,否則是不安全的。接下來(lái),讓我們一起來(lái)看一下,多線程中到底會(huì)發(fā)生什么?

線程不安全示例

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

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

運(yùn)行結(jié)果主要包含如下幾個(gè)錯(cuò)誤:

  • 無(wú)異常,日期解析出現(xiàn)錯(cuò)誤

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

  • 有異常,java.lang.NumberFormatException

如,

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

再如,

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

那么問(wèn)題來(lái)了,如何保證運(yùn)行正常呢?

解決方法

其實(shí),從SimpleDateFormat的javadoc中已經(jīng)看到有處理的方法了。

 Date formats are notsynchronized.

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

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

接下來(lái),先從這個(gè)描述信息給出相關(guān)的解決方法。

(一)每次都新建SimpleDateFormat對(duì)象

改造SimpleDateFormatExample類,如:

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

執(zhí)行上述Main.java類,得到正確結(jié)果:

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

(二) 訪問(wèn)format時(shí),添加synchronized

改造SimpleDateFormatExample類,如:

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

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

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

同樣,執(zhí)行上述Main.java類,可以得到正確結(jié)果:

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

(三)使用TheadLocal

改造SimpleDateFormatExample類,如:

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

同樣,執(zhí)行上述Main.java類,可以得到正確結(jié)果:

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

(四)使用FastDateFormat

FastDateFormat類在Apache Common Langs包下面,

 該類是線程安全的

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

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

改造SimpleDateFormatExample類,如:

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

完整的類為:

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

同樣,執(zhí)行上述Main.java類,可以得到正確結(jié)果:

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

(五)使用Joda Time

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

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


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

改造SimpleDateFormatExample類,如:

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

同樣,執(zhí)行上述Main.java類,可以得到正確結(jié)果:

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

以上是“java中SimpleDateFormat線程不安全的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱:java中SimpleDateFormat線程不安全的示例分析
文章來(lái)源:http://www.chinadenli.net/article46/geejeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司全網(wǎng)營(yíng)銷推廣做網(wǎng)站商城網(wǎng)站營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司