TransmittableThreadLocal 測(cè)試


import com.alibaba.ttl.TransmittableThreadLocal;
import com.alibaba.ttl.TtlRunnable;
import com.alibaba.ttl.threadpool.TtlExecutors;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * TransmittableThreadLocal 測(cè)試
 */
@Slf4j
class TTLest {

    @Test
    void test1() throws InterruptedException {
        doTest();
    }

    /**
     * TTL 測(cè)試
     *
     * @throws InterruptedException
     */
    public void doTest() throws InterruptedException {
        TransmittableThreadLocal<String> context = new TransmittableThreadLocal<>();
//        ThreadLocal<String> context = new ThreadLocal<>();

        // 任務(wù)的具體方法
        Runnable runnable = () -> {
            System.out.println("當(dāng)前任務(wù)被執(zhí)行,執(zhí)行時(shí)間:" + new Date() + " 執(zhí)行線(xiàn)程:" + Thread.currentThread().getName() + "thread2 父線(xiàn)程數(shù)據(jù){}" + context.get());
            context.set("value-set-in-son");
            System.out.println("當(dāng)前任務(wù)被執(zhí)行,執(zhí)行時(shí)間:" + new Date() + " 執(zhí)行線(xiàn)程:" + Thread.currentThread().getName() + "thread2 父線(xiàn)程數(shù)據(jù){}" + context.get());
            try {
                // 等待 1s
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };
        // 創(chuàng)建線(xiàn)程,線(xiàn)程的任務(wù)隊(duì)列的長(zhǎng)度為 1
        ThreadPoolExecutor threadPool = new ThreadPoolExecutor(1, 1,
                100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(1),
                new ThreadPoolExecutor.CallerRunsPolicy());

        log.error("錯(cuò)誤使用方式:1-----------------------------------");
        context.set("value-set-in-parent");

        // 添加并執(zhí)行 4 個(gè)任務(wù),模擬拒絕策略CallerRunsPolicy
        threadPool.execute(runnable);
        threadPool.execute(runnable);
        threadPool.execute(runnable);
        threadPool.execute(runnable);
        threadPool.execute(runnable);
        TimeUnit.SECONDS.sleep(5);

        log.error("正確使用方式:1-----------------------------------");
        context.set("value-set-in-parent");

        // 添加并執(zhí)行 4 個(gè)任務(wù),模擬拒絕策略CallerRunsPolicy
        threadPool.execute(TtlRunnable.get(runnable));
        threadPool.execute(TtlRunnable.get(runnable));
        threadPool.execute(TtlRunnable.get(runnable));
        threadPool.execute(TtlRunnable.get(runnable));
        threadPool.execute(TtlRunnable.get(runnable));
        TimeUnit.SECONDS.sleep(5);

        log.error("正確使用方式:2-----------------------------------");
        context.set("value-set-in-parent");

        Executor ttlThreadPool = TtlExecutors.getTtlExecutor(threadPool);
        // 添加并執(zhí)行 4 個(gè)任務(wù),模擬拒絕策略CallerRunsPolicy
        ttlThreadPool.execute(runnable);
        ttlThreadPool.execute(runnable);
        ttlThreadPool.execute(runnable);
        ttlThreadPool.execute(runnable);
        ttlThreadPool.execute(runnable);

        // 線(xiàn)程池執(zhí)行完任務(wù)谍婉,關(guān)閉線(xiàn)程池
        threadPool.shutdown();
    }
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末便斥,一起剝皮案震驚了整個(gè)濱河市士袄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缓熟,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盆赤,居然都是意外死亡蒿囤,警方通過(guò)查閱死者的電腦和手機(jī)客们,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)材诽,“玉大人底挫,你說(shuō)我怎么就攤上這事×辰模” “怎么了建邓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)睁枕。 經(jīng)常有香客問(wèn)我涝缝,道長(zhǎng),這世上最難降的妖魔是什么譬重? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任拒逮,我火速辦了婚禮,結(jié)果婚禮上臀规,老公的妹妹穿的比我還像新娘滩援。我一直安慰自己,他們只是感情好塔嬉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布玩徊。 她就那樣靜靜地躺著,像睡著了一般谨究。 火紅的嫁衣襯著肌膚如雪恩袱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天胶哲,我揣著相機(jī)與錄音畔塔,去河邊找鬼。 笑死鸯屿,一個(gè)胖子當(dāng)著我的面吹牛澈吨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寄摆,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谅辣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了婶恼?” 一聲冷哼從身側(cè)響起桑阶,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤柏副,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蚣录,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體搓扯,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年包归,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铅歼。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡公壤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出椎椰,到底是詐尸還是另有隱情厦幅,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布慨飘,位于F島的核電站确憨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瓤的。R本人自食惡果不足惜休弃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望圈膏。 院中可真熱鬧塔猾,春花似錦、人聲如沸稽坤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尿褪。三九已至睦擂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杖玲,已是汗流浹背顿仇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摆马,地道東北人夺欲。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像今膊,于是被迫代替她去往敵國(guó)和親些阅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容