成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java Threadlocal

layman / 1132人閱讀

摘要:將當(dāng)前線程局部變量的值刪除,目的是為了減少內(nèi)存的占用,該方法是新增的方法。返回該線程局部變量的初始值,該方法是一個(gè)的方法,顯然是為了讓子類覆蓋而設(shè)計(jì)的。

Threadlocal

ThreadLocal提高一個(gè)線程的局部變量,訪問(wèn)某個(gè)線程擁有自己局部變量。
當(dāng)使用ThreadLocal維護(hù)變量時(shí),ThreadLocal為每個(gè)使用該變量的線程提供獨(dú)立的變量副本,所以每一個(gè)線程都可以獨(dú)立地改變自己的副本,而不會(huì)影響其它線程所對(duì)應(yīng)的副本。
ThreadLocal的接口方法
ThreadLocal類接口很簡(jiǎn)單,只有4個(gè)方法:
? void set(Object value)設(shè)置當(dāng)前線程的線程局部變量的值。
? public Object get()該方法返回當(dāng)前線程所對(duì)應(yīng)的線程局部變量。
? public void remove()將當(dāng)前線程局部變量的值刪除,目的是為了減少內(nèi)存的占用,該方法是JDK 5.0新增的方法。需要指出的是,當(dāng)線程結(jié)束后,對(duì)應(yīng)該線程的局部變量將自動(dòng)被垃圾回收,所以顯式調(diào)用該方法清除線程的局部變量并不是必須的操作,但它可以加快內(nèi)存回收的速度。
? protected Object initialValue()返回該線程局部變量的初始值,該方法是一個(gè)protected的方法,顯然是為了讓子類覆蓋而設(shè)計(jì)的。這個(gè)方法是一個(gè)延遲調(diào)用方法,在線程第1次調(diào)用get()或set(Object)時(shí)才執(zhí)行,并且僅執(zhí)行1次。ThreadLocal中的缺省實(shí)現(xiàn)直接返回一個(gè)null。

示例
public class LocalDemo {
    // 生成序列號(hào)共享變量
    public static Integer count = 0;
    public static ThreadLocal threadLocal = new ThreadLocal() {
        protected Integer initialValue() {

            return 0;
        };

    };

    public Integer getNum() {
        int count = threadLocal.get() + 1;
        threadLocal.set(count);
        return count;
    }
}
public class LocalThread extends Thread{
    private LocalDemo localDemo;

    public LocalThread(LocalDemo localDemo) {
        this.localDemo = localDemo;
    }

    @Override
    public void run() {
        for (int i = 0; i < 3; i++) {
            System.out.println(Thread.currentThread().getName() + "---" + "i---" + i + "--num:" + localDemo.getNum());
        }
    }
}
@RequestMapping("test-local")
    public void testLocal() {
        LocalDemo localDemo = new LocalDemo();
        LocalThread lt1 = new LocalThread(localDemo);
        LocalThread lt2 = new LocalThread(localDemo);
        LocalThread lt3 = new LocalThread(localDemo);
        lt1.start();
        lt2.start();
        lt3.start();
    }
結(jié)果

Thread-18---i---0--num:1
Thread-18---i---1--num:2
Thread-18---i---2--num:3
Thread-17---i---0--num:1
Thread-17---i---1--num:2
Thread-17---i---2--num:3
Thread-19---i---0--num:1
Thread-19---i---1--num:2
Thread-19---i---2--num:3

ThreadLoca實(shí)現(xiàn)原理

ThreadLoca通過(guò)map集合
Map.put(“當(dāng)前線程”,值);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74549.html

相關(guān)文章

  • Java面試題必備知識(shí)之ThreadLocal

    摘要:方法,刪除當(dāng)前線程綁定的這個(gè)副本數(shù)字,這個(gè)值是的值,普通的是使用鏈表來(lái)處理沖突的,但是是使用線性探測(cè)法來(lái)處理沖突的,就是每次增加的步長(zhǎng),根據(jù)參考資料所說(shuō),選擇這個(gè)數(shù)字是為了讓沖突概率最小。 showImg(https://segmentfault.com/img/remote/1460000019828633); 老套路,先列舉下關(guān)于ThreadLocal常見(jiàn)的疑問(wèn),希望可以通過(guò)這篇學(xué)...

    Maxiye 評(píng)論0 收藏0
  • Java基礎(chǔ)進(jìn)階之ThreadLocal詳解

    摘要:基本在項(xiàng)目開(kāi)發(fā)中基本不會(huì)用到但是面試官是比較喜歡問(wèn)這類問(wèn)題的所以還是有必要了解一下該類的功能與原理的是什么是一個(gè)將在多線程中為每一個(gè)線程創(chuàng)建單獨(dú)的變量副本的類當(dāng)使用來(lái)維護(hù)變量時(shí)會(huì)為每個(gè)線程創(chuàng)建單獨(dú)的變量副本避免因多線程操作共享變量而導(dǎo)致的數(shù) ThreadLocal基本在項(xiàng)目開(kāi)發(fā)中基本不會(huì)用到, 但是面試官是比較喜歡問(wèn)這類問(wèn)題的;所以還是有必要了解一下該類的功能與原理的. Thread...

    worldligang 評(píng)論0 收藏0
  • Java 并發(fā)設(shè)計(jì)模式

    摘要:并發(fā)設(shè)計(jì)模式一模式的使用表示線程本地存儲(chǔ)模式。為不同的任務(wù)創(chuàng)建不同的線程池,這樣能夠有效的避免死鎖問(wèn)題。兩階段終止,即將線程的結(jié)束分為了兩個(gè)階段,第一個(gè)階段是一個(gè)線程向另一個(gè)線程發(fā)送終止指令,第二個(gè)階段是線程響應(yīng)終止指令。 Java 并發(fā)設(shè)計(jì)模式 一、Thread Local Storage 模式 1. ThreadLocal 的使用 Thread Local Storage 表示線程...

    zero 評(píng)論0 收藏0
  • Java多線程基礎(chǔ)-ThreadLocal

    摘要:并沒(méi)有提供語(yǔ)言級(jí)的線程局部變量,而是在類庫(kù)里提供了線程局部變量的功能,也就是這次的主角類。 Yuicon 轉(zhuǎn)載請(qǐng)注明原創(chuàng)出處,謝謝! 序 在多線程環(huán)境下,訪問(wèn)非線程安全的變量時(shí)必須進(jìn)行線程同步,例如使用synchronized方式訪問(wèn)HashMap實(shí)例。但是同步訪問(wèn)會(huì)降低并發(fā)性,影響系統(tǒng)性能。這時(shí)候就可以用空間換時(shí)間,如果我們給每個(gè)線程都分配一個(gè)獨(dú)立的變量,就可以用非同步的方式使用非...

    JasonZhang 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)17--ThreadLocal

    摘要:概念類用來(lái)存放線程的局部變量,每個(gè)線程都有自己的局部變量彼此之間不共享。返回當(dāng)前線程的局部變量初始值。工作流程的時(shí)候我們可以看見(jiàn)是從中獲取的,也就是說(shuō)這些局部變量真正存儲(chǔ)在中的時(shí)候從中獲取到了,然后再?gòu)闹蝎@取。和都用于解決多線程并發(fā)訪問(wèn)。 【概念 ThreadLocal類用來(lái)存放線程的局部變量,每個(gè)線程都有自己的局部變量彼此之間不共享。TheadLocal主要有以下三個(gè)方法: pub...

    jayce 評(píng)論0 收藏0
  • 談?wù)?em>Java引用和Threadlocal的那些事

    摘要:容易導(dǎo)致內(nèi)存泄漏。如果我們的強(qiáng)引用不存在的話,那么就會(huì)被回收,也就是會(huì)出現(xiàn)我們沒(méi)被回收,被回收,導(dǎo)致永遠(yuǎn)存在,出現(xiàn)內(nèi)存泄漏。緩存行和一次定位,不會(huì)有沖突由于使用數(shù)組,不會(huì)出現(xiàn)回收,沒(méi)被回收的尷尬局面,所以避免了內(nèi)存泄漏。 1 背景 某一天在某一個(gè)群里面的某個(gè)群友突然提出了一個(gè)問(wèn)題:threadlocal的key是虛引用,那么在threadlocal.get()的時(shí)候,發(fā)生GC之后,ke...

    justjavac 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<