如何理解SimpleDateFormat ,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站設計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的旅順口網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
@Test public void testParse() { ExecutorService executorService = Executors.newCachedThreadPool(); ListdateStrList = Lists.newArrayList( "2018-04-01 10:00:01", "2018-04-02 11:00:02", "2018-04-03 12:00:03", "2018-04-04 13:00:04", "2018-04-05 14:00:05" ); /** * 注意這個地方很容易犯錯?。?! * 所以這里 SimpleDateFormat 對象是不能公用的?。?! */ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); for (String str : dateStrList) { executorService.execute(() -> { try { simpleDateFormat.parse(str); TimeUnit.SECONDS.sleep(1); } catch (Exception e) { e.printStackTrace(); } }); }
并發(fā)環(huán)境下使用SimpleDateFormat的parse方法有線程安全問題!
線程安全問題的原因:
如果此時線程A將calendar清空且沒有設置新值,
線程B也進入parse方法用到了SimpleDateFormat對象中的calendar對象,
此時就會產(chǎn)生線程安全問題!
在SimpleDateFormat轉(zhuǎn)換日期是通過Calendar對象來操作的
關于如何理解SimpleDateFormat 問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。