Java Doc注釋 @see:必須頂頭寫寻行, 標簽允許用戶引用其他類的文檔虫腋。具體使用方式如下: 語法格式: @see 全路徑包名#方法名(參數(shù)類型列表) 例子 @link:任...
Java Doc注釋 @see:必須頂頭寫寻行, 標簽允許用戶引用其他類的文檔虫腋。具體使用方式如下: 語法格式: @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 {
// 等待該線程運行完畢
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中查找不到對應的存儲,則會通過調用setInitialValue方法返回i奖蔓,而在setInitialValue方法中赞草,有一個語句是T value = initialValue(), 而默認情況下锭硼,initialValue方法返回的是null房资。」
你自己在結論里都寫了檀头,沒set直接get找不到會返回null轰异,這個是不會報空指針。至于你demo報空指針的原因是暑始,你get返回的null作為Long類型拆箱轉long類型的時候搭独,調用
null.longValue() 這才是你空指針的原因,跟ThreadLocal啥的沒關系廊镜。
總結就是:
1牙肝、ThreadLocal在get之前不set不會空指針;
2嗤朴、java自動拆箱實際是調用了對象的方法將封裝類型轉為基本類型配椭,只要是對象調用方法,就需要預防空指針雹姊。
該文章已歸納在本人 GitHub 的 Blog 倉庫敦姻,歡迎 star 或者 watch。同時歡迎訪問我的博客地址 https://gojun.me/ 有更多干貨歧杏。 RTL ...
本文出自 “阿敏其人” 簡書博客镰惦,轉載或引用請注明出處。 LayerDrawable對應的XML的根元素是<layer-list>,犬绒,它使一種層次化顯示的Drawable集合...
1.Android自帶的api中有獲取Location的方法 邏輯如下:1.先優(yōu)先取得GPS和NetWork的提供的位置情報2.如果取不到旺入,先獲取PASSIVE的情報(其他應...
在ubuntu上交叉編譯helloWorld到arm64的android手機上去。 這里NDK用的是r19及以上的版本奸腺。 1. 安裝NDK 從下面的鏈接下載NDK餐禁,并解壓:h...
目錄 前言 最近在研究一些庫的編譯,上次是編譯了SeetaFace2突照,這次就拿OpenSSL來編譯下帮非,然后編譯完后集成到Android項目中簡單的生成個MD5。 效果展示 實...
libandroid.so——frameworks/base/native/android libandroid_runtime.so——frameworks/base/co...
在上一篇文章AndroidX Media3之ExoPlayer簡單使用(1)[http://www.reibang.com/p/23d81c36f552]中介紹了ExoPl...
前言: 當我們在使用ScrollView的時候讹蘑,當前頁面超出Scrollview顯示頁面需要自動滾動到底部時末盔,發(fā)現(xiàn)不能完全滾動到底部。這是因為Android下很多函數(shù)都是基于...
思考:TextView你設置字體12sp,那么TextView的高是多少座慰?12sp?錯陨舱,其實TextView是有默認上下padding的,你會發(fā)現(xiàn)他的高度高于12sp設置 a...
終于看懂了版仔,其他博客寫的什么玩意啊
getDimension()游盲、getDimensionPixelSize()和getDimensionPixelOffset()的區(qū)別今天寫代碼的時候,需要從資源文件中讀取一個長度值蛮粮,用來設置控件的寬高,誤以為getDimension()返回的就是資源里定義的dp值益缎,后來發(fā)現(xiàn)不是我理解的那樣。下面介紹一下g...
今天寫代碼的時候莺奔,需要從資源文件中讀取一個長度值,用來設置控件的寬高,誤以為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...