Android開發(fā)之SimpleDateFormat線程安全ThreadLocal

SimpleDateFormat為非線程(Thread)安全, 多線程時會造成問題庶柿。

方法一:
直接用static
缺點:不同線程的安全性(皆能共享)

方法二:
使用時才new一個
缺點:消耗內(nèi)存, 影響效能

方法三:
最推薦的方式為透過ThreadLocal

ThreadLocal可根據(jù)不同線程, 存取不同的值,
舉個例子:

        final int num = 10;
        final ThreadLocal<Integer> threadLocal = new ThreadLocal<>();
        threadLocal.set(num);
        Log.e("adam", "test, 1, get: " + threadLocal.get());
        new Thread(new Runnable() {
            @Override
            public void run() {
                threadLocal.set(20);
                Log.e("adam", "test, 2, get: " + threadLocal.get());
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                Log.e("adam", "test, 3, get: " + threadLocal.get());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Log.e("adam", "test, 4, get: " + threadLocal.get());
                    }
                });
            }
        }).start();

結(jié)果:
test, 1, get: 10
test, 2, get: 20
test, 3, get: null
test, 4, get: 10

Thread中沒設(shè)值時, 取出的是null, UIThreadhread設(shè)的是10, 並沒有因為第一個Thread設(shè)值20而改變, test 4依然是10轧坎。

由此可確認,ThreadLocal的存取是獨立於不同線程原献。

SimpleDateFormat透過ThreadLocal:

    private static final ThreadLocal<DateFormat> dateFormatThreadLocal = new ThreadLocal<DateFormat>();
    private static DateFormat getDateFormat(String format){
        DateFormat dateFormat = dateFormatThreadLocal.get();
        if(dateFormat == null){
            dateFormat = new SimpleDateFormat(format);
            dateFormatThreadLocal.set(dateFormat);
        }
        return dateFormat;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末输涕,一起剝皮案震驚了整個濱河市廉邑,隨后出現(xiàn)的幾起案子哥蔚,更是在濱河造成了極大的恐慌,老刑警劉巖蛛蒙,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糙箍,死亡現(xiàn)場離奇詭異,居然都是意外死亡牵祟,警方通過查閱死者的電腦和手機深夯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诺苹,“玉大人咕晋,你說我怎么就攤上這事∈毡迹” “怎么了掌呜?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坪哄。 經(jīng)常有香客問我站辉,道長呢撞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任饰剥,我火速辦了婚禮,結(jié)果婚禮上摧阅,老公的妹妹穿的比我還像新娘汰蓉。我一直安慰自己,他們只是感情好棒卷,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布顾孽。 她就那樣靜靜地躺著,像睡著了一般比规。 火紅的嫁衣襯著肌膚如雪若厚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天蜒什,我揣著相機與錄音测秸,去河邊找鬼。 笑死灾常,一個胖子當著我的面吹牛霎冯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钞瀑,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼沈撞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雕什?” 一聲冷哼從身側(cè)響起缠俺,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贷岸,沒想到半個月后壹士,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡凰盔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年墓卦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片户敬。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡落剪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尿庐,到底是詐尸還是另有隱情忠怖,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布抄瑟,位于F島的核電站凡泣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鞋拟,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一骂维、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贺纲,春花似錦航闺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懈叹,卻和暖如春乖杠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背澄成。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工胧洒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人环揽。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓略荡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親歉胶。 傳聞我的和親對象是個殘疾皇子汛兜,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 自然衝擊療法由丁愚仁老師發(fā)明,又稱「禪拍」通今,「拍打」粥谬,"自然拍打"。 丁師及其團隊總結(jié)經(jīng)驗辫塌,不同的各種病癥(含絕癥...
    YouAreMyMusic閱讀 2,258評論 0 4
  • 《達爾文所未知的》解說詞 撰寫(Written):阿爾芒·馬裏耶(The Animal Mother) 翻譯(Tr...
    JENTSON閱讀 1,401評論 0 1
  • The Art of Jumping Time Lines跳躍時間線的藝術(shù) A Hathor Planetary ...
    愉悅的Gil閱讀 907評論 0 4
  • 程序員創(chuàng)業(yè)白皮書 作者:Paul Graham Paul Graham是程序員漏策,專欄作家。他在1995年創(chuàng)建了第一...
    劉立山John閱讀 1,928評論 0 20
  • 有知識不一定改變命運臼氨,但是沒有知識一定改變不了命運掺喻。只要你還在努力,人生就有無窮的可能储矩。和時間競爭感耙,在概率中突圍,...
    筱喆閱讀 160評論 0 0