Java Doc注釋 @see:必須頂頭寫丁稀, 標(biāo)簽允許用戶引用其他類的文檔。具體使用方式如下: 語法格式: @see 全路徑包名#方法名(參數(shù)類型列表) 例子 @link:任...
Java Doc注釋 @see:必須頂頭寫丁稀, 標(biāo)簽允許用戶引用其他類的文檔。具體使用方式如下: 語法格式: @see 全路徑包名#方法名(參數(shù)類型列表) 例子 @link:任...
沒有set之前直接get得到是null凿可,不會報空指針。
public class MainUse {
private static final ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
/* @Override
protected Integer initialValue() {
return 0;
}*/
};
static class SetThread extends Thread {
@Override
public void run() {
Integer i = threadLocal.get();
System.out.println("SetThread: threadlocal value: " + i);
// threadLocal.set(1);
System.out.println("SetThread: threadlocal new value: " + threadLocal.get());
System.out.println("SetThread finished.");
}
}
static class GetThread extends Thread {
@Override
public void run() {
System.out.println("GetThread: threadlocal value:" + threadLocal.get());
}
}
public static void main(String[] args) {
SetThread setThread = new SetThread();
setThread.start();
try {
// 等待該線程運(yùn)行完畢
setThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
GetThread getThread = new GetThread();
getThread.start();
System.out.println("main thread: threadlocal value: " + threadLocal.get());
}
}
輸出
SetThread: threadlocal value: null
SetThread: threadlocal new value: null
SetThread finished.
main thread: threadlocal value: null
GetThread: threadlocal value:null
Process finished with exit code 0
ThreadLocal作用枯跑、場景、原理1.ThreadLocal 是什么敛助? 在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal為解決多線程程序的并發(fā)問題提供了一種新的...
「如果沒有先set的話纳击,即在map中查找不到對應(yīng)的存儲续扔,則會通過調(diào)用setInitialValue方法返回i,而在setInitialValue方法中纱昧,有一個語句是T value = initialValue(), 而默認(rèn)情況下堡赔,initialValue方法返回的是null砌些。」
你自己在結(jié)論里都寫了加匈,沒set直接get找不到會返回null,這個是不會報空指針仑荐。至于你demo報空指針的原因是,你get返回的null作為Long類型拆箱轉(zhuǎn)long類型的時候粘招,調(diào)用
null.longValue() 這才是你空指針的原因啥寇,跟ThreadLocal啥的沒關(guān)系洒扎。
總結(jié)就是:
1辑甜、ThreadLocal在get之前不set不會空指針袍冷;
2、java自動拆箱實(shí)際是調(diào)用了對象的方法將封裝類型轉(zhuǎn)為基本類型胡诗,只要是對象調(diào)用方法邓线,就需要預(yù)防空指針。
該文章已歸納在本人 GitHub 的 Blog 倉庫,歡迎 star 或者 watch二汛。同時歡迎訪問我的博客地址 https://gojun.me/ 有更多干貨婿崭。 RTL ...
本文出自 “阿敏其人” 簡書博客逛球,轉(zhuǎn)載或引用請注明出處。 LayerDrawable對應(yīng)的XML的根元素是<layer-list>,苫昌,它使一種層次化顯示的Drawable集合...
1.Android自帶的api中有獲取Location的方法 邏輯如下:1.先優(yōu)先取得GPS和NetWork的提供的位置情報2.如果取不到幸海,先獲取PASSIVE的情報(其他應(yīng)...
在ubuntu上交叉編譯helloWorld到arm64的android手機(jī)上去酷宵。 這里NDK用的是r19及以上的版本。 1. 安裝NDK 從下面的鏈接下載NDK躬窜,并解壓:h...
目錄 前言 最近在研究一些庫的編譯,上次是編譯了SeetaFace2斩披,這次就拿OpenSSL來編譯下溜族,然后編譯完后集成到Android項目中簡單的生成個MD5垦沉。 效果展示 實(shí)...
libandroid.so——frameworks/base/native/android libandroid_runtime.so——frameworks/base/co...
在上一篇文章AndroidX Media3之ExoPlayer簡單使用(1)[http://www.reibang.com/p/23d81c36f552]中介紹了ExoPl...
前言: 當(dāng)我們在使用ScrollView的時候寡壮,當(dāng)前頁面超出Scrollview顯示頁面需要自動滾動到底部時,發(fā)現(xiàn)不能完全滾動到底部讹弯。這是因為Android下很多函數(shù)都是基于...
思考:TextView你設(shè)置字體12sp,那么TextView的高是多少?12sp?錯组民,其實(shí)TextView是有默認(rèn)上下padding的棒仍,你會發(fā)現(xiàn)他的高度高于12sp設(shè)置 a...
終于看懂了臭胜,其他博客寫的什么玩意啊
getDimension()莫其、getDimensionPixelSize()和getDimensionPixelOffset()的區(qū)別今天寫代碼的時候癞尚,需要從資源文件中讀取一個長度值乱陡,用來設(shè)置控件的寬高,誤以為getDimension()返回的就是資源里定義的dp值浇揩,后來發(fā)現(xiàn)不是我理解的那樣。下面介紹一下g...
今天寫代碼的時候,需要從資源文件中讀取一個長度值爽彤,用來設(shè)置控件的寬高,誤以為getDimension()返回的就是資源里定義的dp值养盗,后來發(fā)現(xiàn)不是我理解的那樣适篙。下面介紹一下g...
我只知道圖很好看????????
Android ImageView 的scaleType 屬性圖解ImageView 是 Android 中最常用的控件之一,而在使用ImageView時匙瘪,必不可少的會使用到它的scaleType屬性。該屬性指定了你想讓ImageView如...
ImageView 是 Android 中最常用的控件之一翁都,而在使用ImageView時碍论,必不可少的會使用到它的scaleType屬性。該屬性指定了你想讓ImageView如...
本文主要介紹協(xié)程的用法, 以及使用協(xié)程能帶來什么好處. 另外, 也會粗略提一下協(xié)程的大致原理.本文的意義可能僅僅是讓你了解一下協(xié)程, 并愿意開始使用它.如果想徹底理解協(xié)程, ...
目錄 1.介紹 2.為什么要用ConstraintLayout 3.如何使用ConstraintLayout3.1 添加依賴3.2 相對定位3.3 角度定位3.4 邊距3.5...