国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

java Threadlocal

layman / 1124人閱讀

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

Threadlocal

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    摘要:容易導(dǎo)致內(nèi)存泄漏。如果我們的強(qiáng)引用不存在的話(huà),那么就會(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元查看
<