Java Doc注釋 @see:必須頂頭寫恕出, 標(biāo)簽允許用戶引用其他類的文檔。具體使用方式如下: 語法格式: @see 全路徑包名#方法名(參數(shù)類型列表) 例子 @link:任...
Java Doc注釋 @see:必須頂頭寫恕出, 標(biāo)簽允許用戶引用其他類的文檔。具體使用方式如下: 語法格式: @see 全路徑包名#方法名(參數(shù)類型列表) 例子 @link:任...
沒有set之前直接get得到是null,不會(huì)報(bào)空指針。
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作用、場(chǎng)景、原理1.ThreadLocal 是什么? 在JDK 1.2的版本中就提供java.lang.ThreadLocal涡贱,ThreadLocal為解決多線程程序的并發(fā)問題提供了一種新的...
「如果沒有先set的話,即在map中查找不到對(duì)應(yīng)的存儲(chǔ)惹想,則會(huì)通過調(diào)用setInitialValue方法返回i问词,而在setInitialValue方法中,有一個(gè)語句是T value = initialValue()嘀粱, 而默認(rèn)情況下激挪,initialValue方法返回的是null辰狡。」
你自己在結(jié)論里都寫了垄分,沒set直接get找不到會(huì)返回null宛篇,這個(gè)是不會(huì)報(bào)空指針。至于你demo報(bào)空指針的原因是薄湿,你get返回的null作為L(zhǎng)ong類型拆箱轉(zhuǎn)long類型的時(shí)候些己,調(diào)用
null.longValue() 這才是你空指針的原因,跟ThreadLocal啥的沒關(guān)系嘿般。
總結(jié)就是:
1、ThreadLocal在get之前不set不會(huì)空指針涯冠;
2炉奴、java自動(dòng)拆箱實(shí)際是調(diào)用了對(duì)象的方法將封裝類型轉(zhuǎn)為基本類型,只要是對(duì)象調(diào)用方法蛇更,就需要預(yù)防空指針瞻赶。
9929ae5eb4b8 評(píng)論自ThreadLocal作用、場(chǎng)景派任、原理
該文章已歸納在本人 GitHub 的 Blog 倉庫,歡迎 star 或者 watch掌逛。同時(shí)歡迎訪問我的博客地址 https://gojun.me/ 有更多干貨师逸。 RTL ...
本文出自 “阿敏其人” 簡(jiǎn)書博客,轉(zhuǎn)載或引用請(qǐng)注明出處豆混。 LayerDrawable對(duì)應(yīng)的XML的根元素是<layer-list>,篓像,它使一種層次化顯示的Drawable集合...
1.Android自帶的api中有獲取Location的方法 邏輯如下:1.先優(yōu)先取得GPS和NetWork的提供的位置情報(bào)2.如果取不到,先獲取PASSIVE的情報(bào)(其他應(yīng)...
在ubuntu上交叉編譯helloWorld到arm64的android手機(jī)上去弃甥。 這里NDK用的是r19及以上的版本。 1. 安裝NDK 從下面的鏈接下載NDK汁讼,并解壓:h...
目錄 前言 最近在研究一些庫的編譯淆攻,上次是編譯了SeetaFace2阔墩,這次就拿OpenSSL來編譯下,然后編譯完后集成到Android項(xiàng)目中簡(jiǎn)單的生成個(gè)MD5瓶珊。 效果展示 實(shí)...
libandroid.so——frameworks/base/native/android libandroid_runtime.so——frameworks/base/co...
在上一篇文章AndroidX Media3之ExoPlayer簡(jiǎn)單使用(1)[http://www.reibang.com/p/23d81c36f552]中介紹了ExoPl...
前言: 當(dāng)我們?cè)谑褂肧crollView的時(shí)候啸箫,當(dāng)前頁面超出Scrollview顯示頁面需要自動(dòng)滾動(dòng)到底部時(shí),發(fā)現(xiàn)不能完全滾動(dòng)到底部伞芹。這是因?yàn)锳ndroid下很多函數(shù)都是基于...
思考:TextView你設(shè)置字體12sp,那么TextView的高是多少忘苛?12sp?錯(cuò),其實(shí)TextView是有默認(rèn)上下padding的唱较,你會(huì)發(fā)現(xiàn)他的高度高于12sp設(shè)置 a...
終于看懂了扎唾,其他博客寫的什么玩意啊
getDimension()、getDimensionPixelSize()和getDimensionPixelOffset()的區(qū)別今天寫代碼的時(shí)候南缓,需要從資源文件中讀取一個(gè)長(zhǎng)度值胸遇,用來設(shè)置控件的寬高,誤以為getDimension()返回的就是資源里定義的dp值,后來發(fā)現(xiàn)不是我理解的那樣汉形。下面介紹一下g...
今天寫代碼的時(shí)候,需要從資源文件中讀取一個(gè)長(zhǎng)度值概疆,用來設(shè)置控件的寬高,誤以為getDimension()返回的就是資源里定義的dp值逗威,后來發(fā)現(xiàn)不是我理解的那樣。下面介紹一下g...
我只知道圖很好看????????
Android ImageView 的scaleType 屬性圖解ImageView 是 Android 中最常用的控件之一岔冀,而在使用ImageView時(shí)凯旭,必不可少的會(huì)使用到它的scaleType屬性。該屬性指定了你想讓ImageView如...
ImageView 是 Android 中最常用的控件之一尽纽,而在使用ImageView時(shí),必不可少的會(huì)使用到它的scaleType屬性童漩。該屬性指定了你想讓ImageView如...
本文主要介紹協(xié)程的用法, 以及使用協(xié)程能帶來什么好處. 另外, 也會(huì)粗略提一下協(xié)程的大致原理.本文的意義可能僅僅是讓你了解一下協(xié)程, 并愿意開始使用它.如果想徹底理解協(xié)程, ...
目錄 1.介紹 2.為什么要用ConstraintLayout 3.如何使用ConstraintLayout3.1 添加依賴3.2 相對(duì)定位3.3 角度定位3.4 邊距3.5...