国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

面試官:談?wù)勀銓?duì)ThreadLocal的理解?

共 7608字,需瀏覽 16分鐘

 ·

2021-11-03 19:22

大家好,我是陌溪

ThreadLocal 作為 Java 面試的高頻題,陌溪在之前面試的時(shí)候也遇到過,所以后面專門針對(duì) ThreadLocal 寫了一份筆記,讓我們一起來看看~

什么是ThreadLocal?

Java 官方文檔中的描述:ThreadLocal 類用來提供線程內(nèi)部的局部變量。這種變量在多線程環(huán)境下訪問(通過getset 方法訪問)時(shí)能保證各個(gè)線程的變量相對(duì)獨(dú)立于其他線程內(nèi)的變量。ThreadLocal?實(shí)例通常來說都是?private static 類型的,用于關(guān)聯(lián)線程和線程上下文。

我們可以得知 ThreadLocal 的作用是:提供線程內(nèi)的局部變量,不同的線程之間不會(huì)相互干擾,這種變量在線程的生命周期內(nèi)起作用,減少同一個(gè)線程內(nèi)多個(gè)函數(shù)或組件之間一些公共變量傳遞的復(fù)雜度。

  • 線程并發(fā):在多線程并發(fā)的場(chǎng)景下

  • 傳遞數(shù)據(jù):我們可以通過 ThreadLocal 在同一線程,不同組件之間傳遞公共變量(有點(diǎn)類似于 Session?)

  • 線程隔離:每個(gè)線程的變量都是獨(dú)立的,不會(huì)互相影響

基本使用

在介紹 ThreadLocal 使用之前,我們首先認(rèn)識(shí)幾個(gè) ThreadLocal 的常見方法

方法聲明描述
ThreadLocal()創(chuàng)建ThreadLocal對(duì)象
public void set(T value)設(shè)置當(dāng)前線程綁定的局部變量
public T get()獲取當(dāng)前線程綁定的局部變量
public void remove()移除當(dāng)前線程綁定的局部變量

使用案例

我們來看下面這個(gè)線程不安全的案例,感受一下 ThreadLocal 線程隔離的特點(diǎn)。

/**
?*?需求:線程隔離
?*?在多線程并發(fā)的場(chǎng)景下,每個(gè)線程中的變量都是相互獨(dú)立的
?*?線程A:設(shè)置變量1,獲取變量2
?*?線程B:設(shè)置變量2,獲取變量2
?*?@author:?陌溪
?*/

public?class?MyDemo01?{
????//?變量
????private?String?content;

????public?String?getContent()?{
????????return?content;
????}

????public?void?setContent(String?content)?{
????????this.content?=?content;
????}

????public?static?void?main(String[]?args)?{
????????MyDemo01?myDemo01?=?new?MyDemo01();
????????for?(int?i?=?0;?i?5;?i++)?{
????????????new?Thread(()?->?{
????????????????myDemo01.setContent(Thread.currentThread().getName()?+?"的數(shù)據(jù)");
????????????????System.out.println("-----------------------------------------");
????????????????System.out.println(Thread.currentThread().getName()?+?"\t??"?+?myDemo01.getContent());
????????????},?String.valueOf(i)).start();
????????}
????}
}

運(yùn)行后的效果

-----------------------------------------
-----------------------------------------
-----------------------------------------
3??????4的數(shù)據(jù)
-----------------------------------------
2??????4的數(shù)據(jù)
-----------------------------------------
1??????4的數(shù)據(jù)
4??????4的數(shù)據(jù)
0??????4的數(shù)據(jù)

從上面我們可以看到,出現(xiàn)了線程不隔離的問題,也就是線程1取出了線程4的內(nèi),那么如何解決呢?

這個(gè)時(shí)候就可以用到 ThreadLocal 了,我們通過 set 將變量綁定到當(dāng)前線程中,然后 get 獲取當(dāng)前線程綁定的變量

/**
?*?需求:線程隔離
?*?在多線程并發(fā)的場(chǎng)景下,每個(gè)線程中的變量都是相互獨(dú)立的
?*?線程A:設(shè)置變量1,獲取變量2
?*?線程B:設(shè)置變量2,獲取變量2
?*?@author:?陌溪
?*/

public?class?MyDemo01?{
????//?變量
????private?String?content;

????public?String?getContent()?{
????????return?content;
????}

????public?void?setContent(String?content)?{
????????this.content?=?content;
????}

????public?static?void?main(String[]?args)?{
????????MyDemo01?myDemo01?=?new?MyDemo01();
????????ThreadLocal?threadLocal?=?new?ThreadLocal<>();
????????for?(int?i?=?0;?i?5;?i++)?{
????????????new?Thread(()?->?{
????????????????threadLocal.set(Thread.currentThread().getName()?+?"的數(shù)據(jù)");
????????????????System.out.println("-----------------------------------------");
????????????????System.out.println(Thread.currentThread().getName()?+?"\t??"?+?threadLocal.get());
????????????},?String.valueOf(i)).start();
????????}
????}
}

通過引入 ThreadLocal 后,查看運(yùn)行結(jié)果如下:

-----------------------------------------
-----------------------------------------
4??????4的數(shù)據(jù)
-----------------------------------------
3??????3的數(shù)據(jù)
-----------------------------------------
2??????2的數(shù)據(jù)
-----------------------------------------
1??????1的數(shù)據(jù)
0??????0的數(shù)據(jù)

發(fā)現(xiàn)不會(huì)出現(xiàn)上面的情況了,也就是當(dāng)前線程只能獲取線程線程存儲(chǔ)的對(duì)象

ThreadLocal類和Synchronized關(guān)鍵字

Synchronized同步方式

對(duì)于上述的例子,完全可以通過加鎖的方式來實(shí)現(xiàn)這個(gè)功能,我們來看一下用 Synchronized 代碼塊實(shí)現(xiàn)的效果:

????public?static?void?main(String[]?args)?{
????????MyDemo03?myDemo01?=?new?MyDemo03();
????????for?(int?i?=?0;?i?5;?i++)?{
????????????new?Thread(()?->?{
????????????????synchronized?(MyDemo03.class)?{
????????????????????myDemo01.setContent(Thread.currentThread().getName()?+?"的數(shù)據(jù)");
????????????????????System.out.println("-----------------------------------------");
????????????????????System.out.println(Thread.currentThread().getName()?+?"\t??"?+?myDemo01.getContent());
????????????????}
????????????},?String.valueOf(i)).start();
????????}
????}

運(yùn)行結(jié)果如下所示,發(fā)現(xiàn)通過加鎖可以實(shí)現(xiàn)與ThreadLocal線程隔離的功能,但是并發(fā)性降低了。

-----------------------------------------
0??????0的數(shù)據(jù)
-----------------------------------------
4??????4的數(shù)據(jù)
-----------------------------------------
3??????3的數(shù)據(jù)
-----------------------------------------
2??????2的數(shù)據(jù)
-----------------------------------------
1??????1的數(shù)據(jù)

ThreadLocal與Synchronized的區(qū)別

雖然 ThreadLocal 模式與 Synchronized 關(guān)鍵字都用于處理多線程并發(fā)訪問變量的問題,不過兩者處理問題的角度和思路不同。


SynchronizedThreadLocal
原理同步機(jī)制采用以時(shí)間換空間的方式,只提供了一份變量,讓不同的線程排隊(duì)訪問ThreadLocal采用以空間換時(shí)間的概念,為每個(gè)線程都提供一份變量副本,從而實(shí)現(xiàn)同時(shí)訪問而互不干擾
側(cè)重點(diǎn)多個(gè)線程之間訪問資源的同步多線程中讓每個(gè)線程之間的數(shù)據(jù)相互隔離

總結(jié):在剛剛的案例中,雖然使用 ThreadLocalSynchronized 都能解決問題,但是使用 ThreadLocal 更為合適,因?yàn)檫@樣可以使程序擁有更高的并發(fā)性。

運(yùn)用場(chǎng)景

通過以上的介紹,我們已經(jīng)基本了解 ThreadLocal 的特點(diǎn),但是它具體是運(yùn)用在什么場(chǎng)景中的呢?接下來讓我們看一個(gè)案例:事務(wù)操作

轉(zhuǎn)賬案例

這里們先構(gòu)建一個(gè)簡(jiǎn)單的轉(zhuǎn)賬場(chǎng)景:有一個(gè)數(shù)據(jù)表 account ,里面有兩個(gè)用戶 jackRose,用戶 Jack 給用戶Rose 轉(zhuǎn)賬。案例的實(shí)現(xiàn)主要是用 mysql 數(shù)據(jù)庫(kù),JDBCC3P0 框架,以下是詳細(xì)代碼

這里們先構(gòu)建一個(gè)簡(jiǎn)單的轉(zhuǎn)賬場(chǎng)景:有一個(gè)數(shù)據(jù)表 account ,里面有兩個(gè)用戶 jackRose,用戶 Jack 給用戶Rose 轉(zhuǎn)賬。案例的實(shí)現(xiàn)主要是用 mysql 數(shù)據(jù)庫(kù),JDBCC3P0 框架,以下是詳細(xì)代碼

image-20200710204941153

引入事務(wù)

案例中轉(zhuǎn)賬涉及兩個(gè) DML 操作:一個(gè)轉(zhuǎn)出,一個(gè)轉(zhuǎn)入。這些操作是需要具備原子性的,不可分割。不然有可能出現(xiàn)數(shù)據(jù)修改異常情況。

public?class?AccountService?{
????public?boolean?transfer(String?outUser,?String?isUser,?int?money)?{
????????AccountDao?ad?=?new?AccountDao();
????????try?{
????????????//?轉(zhuǎn)出
????????????ad.out(outUser,?money);
????????????//?模擬轉(zhuǎn)賬過程中的異常
????????????int?i?=?1/0;
????????????//?轉(zhuǎn)入
????????????ad.in(inUser,?money);
????????}?catch(Exception?e)?{
????????????e.printStackTrace();
????????????return?false;
????????}
????????return?true;
????}
}

所以這里就需要操作事務(wù),來保證轉(zhuǎn)入和轉(zhuǎn)出具備原子性,要么成功,要么失敗。

JDBC 中關(guān)于事務(wù)操作的 API

Connection接口的方法作用
void setAutoCommit(false)禁用事務(wù)自動(dòng)提交(改為手動(dòng)提交)
void commit()提交事務(wù)
void rollbakc()回滾事務(wù)

開啟事務(wù)的注意點(diǎn)

  • 為了保證所有操作在一個(gè)事務(wù)中,案例中使用的連接必須是同一個(gè);

  • service 層開啟事務(wù)的 connection 需要跟 dao 層訪問數(shù)據(jù)庫(kù)的 connection 保持一致

  • 線程并發(fā)情況下,每個(gè)線程只能操作各自的 connection,也就是線程隔離

常規(guī)解決方法

基于上面給出的前提,大家通常想到的解決方法

  • service 層將 connection 對(duì)象向 dao 層傳遞

  • 加鎖

常規(guī)解決方法的弊端

  • 提高代碼的耦合度(因?yàn)槲覀冃枰獜?service 層 傳入 connection 參數(shù))

  • 降低程序的性能(加了同步代碼塊,失去了并發(fā)性)

這個(gè)時(shí)候就可以通過 ThreadLocal 和當(dāng)前線程進(jìn)行綁定,來降低代碼之間的耦合

解耦

使用ThreadLocal解決

針對(duì)上面出現(xiàn)的情況,我們需要對(duì)原來的JDBC連接池對(duì)象進(jìn)行更改

  • 將原來從連接池中獲取對(duì)象,改成直接獲取當(dāng)前線程綁定的連接對(duì)象

  • 如果連接對(duì)象是空的

    • 再去連接池中獲取連接

    • 將此連接對(duì)象跟當(dāng)前線程進(jìn)行綁定

ThreadLocal?tl?=?new?ThreadLocal();
public?static?Connection?getConnection()?{
????Connection?conn?=?tl.get();
????if(conn?==?null)?{
????????conn?=?ds.getConnection();
????????tl.set(conn);
????}
????return?conn;
}

ThreadLocal實(shí)現(xiàn)的好處

從上述的案例中我們可以看到,在一些特定場(chǎng)景下,ThreadLocal方案有兩個(gè)突出的優(yōu)勢(shì):

  • 傳遞數(shù)據(jù):保存每個(gè)線程綁定的數(shù)據(jù),在需要的地方可以直接獲取,避免參數(shù)直接傳遞帶來的代碼耦合問題

  • 線程隔離:各線程之間的數(shù)據(jù)相互隔離卻又具備并發(fā)性,避免同步方式帶來的性能損失

ThreadLocal的內(nèi)部結(jié)構(gòu)

通過以上的學(xué)習(xí),我們對(duì) ThreadLocal 的作用有了一定的認(rèn)識(shí)?,F(xiàn)在我們一起來看一下 ThreadLocal 的內(nèi)部結(jié)構(gòu),探究它能夠?qū)崿F(xiàn)線程數(shù)據(jù)隔離的原理。

常見誤解

如果我們不去看源代碼的話,可能會(huì)猜測(cè) ThreadLocal 是這樣子設(shè)計(jì)的:每個(gè) ThreadLocal 都創(chuàng)建一個(gè) Map,然后用線程作為 Mapkey,要存儲(chǔ)的局部變量作為 Mapvalue,這樣就能達(dá)到各個(gè)線程的局部變量隔離的效果。這是最簡(jiǎn)單的設(shè)計(jì)方法,JDK最早期的 ThreadLocal 確實(shí)是這樣設(shè)計(jì)的,但現(xiàn)在早已不是了。

ThreadLocal早期內(nèi)部結(jié)構(gòu)

現(xiàn)在的設(shè)計(jì)

但是,JDK 后面優(yōu)化了設(shè)計(jì)方案,在 JDK8ThreadLocal 的設(shè)計(jì)是:每個(gè) Thread 維護(hù)一個(gè)ThreadLocalMap,這個(gè) MapkeyThreadLocal 實(shí)例本身,value 才是真正要存儲(chǔ)的值 object。具體的過程是這樣的:

  • 每個(gè) Thread 線程內(nèi)部都有一個(gè) MapThreadLocalMap

  • Map 里面存儲(chǔ) ThreadLocal 對(duì)象key 和線程的變量副本 value

  • Thread 內(nèi)部的 Map 是由 ThreadLocal 維護(hù)的,由 ThreadLocal 負(fù)責(zé)向 map 獲取和設(shè)置線程的變量值。

  • 對(duì)于不同的線程,每次獲取副本值時(shí),別的線程并不能獲取到當(dāng)前線程的副本值,形成了副本的隔離,互不干擾。

JDK8前后的設(shè)計(jì)

從上面變成 JDK8 的設(shè)計(jì)有什么好處?

  • 每個(gè) Map 存儲(chǔ)的 Entry 數(shù)量變少,因?yàn)樵瓉淼?Entry 數(shù)量是由 Thread 決定,而現(xiàn)在是由 ThreadLocal 決定的。真實(shí)開發(fā)中,Thread 的數(shù)量遠(yuǎn)遠(yuǎn)大于 ThreadLocal 的數(shù)量

  • 當(dāng) Thread 銷毀的時(shí)候,ThreadLocalMap 也會(huì)隨之銷毀,因?yàn)?ThreadLocal 是存放在 Thread 中的,隨著 Thread 銷毀而消失,能降低開銷。

ThreadLocalMap源碼分析

在分析 ThreadLocal 方法的時(shí)候,我們了解到 ThreadLocal 的操作實(shí)際上是圍繞 ThreadLocalMap 展開的。ThreadLocalMap 的源碼相對(duì)比較復(fù)雜,我們從以下三個(gè)方面進(jìn)行討論。

基本結(jié)構(gòu)

ThreadLocalMapThreadLocal 的內(nèi)部類,沒有實(shí)現(xiàn) Map 接口,用獨(dú)立的方式實(shí)現(xiàn)了 Map 的功能,其內(nèi)部的 Entry 也是獨(dú)立實(shí)現(xiàn)。

基本結(jié)構(gòu)

成員變量

/**
*?初始容量?-?必須是2的整次冪
**/

private?static?final?int?INITIAL_CAPACITY?=?16;

/**
*存放數(shù)據(jù)的table?,Entry類的定義在下面分析,同樣,數(shù)組的長(zhǎng)度必須是2的整次冪
**/

private?Entry[]?table;

/**
*數(shù)組里面entrys的個(gè)數(shù),可以用于判斷table當(dāng)前使用量是否超過閾值
**/

private?int?size?=?0;

/**
*進(jìn)行擴(kuò)容的閾值,表使用量大于它的時(shí)候進(jìn)行擴(kuò)容
**/

private?int?threshold;?//?Default?to?0

HashMap 類似,INITIAL_CAPACITY 代表這個(gè) Map 的初始容量;table 是一個(gè) Entry 類型的數(shù)組,用于存儲(chǔ)數(shù)據(jù);size 代表表中的存儲(chǔ)數(shù)目;threshold 代表需要擴(kuò)容時(shí)對(duì)應(yīng)的 size 的閾值。

存儲(chǔ)結(jié)構(gòu) - Entry

/*
*Entry繼承WeakRefefence,并且用ThreadLocal作為key.
如果key為nu11(entry.get()==nu11),意味著key不再被引用,
*因此這時(shí)候entry也可以從table中清除。
*/

static?class?Entry?extends?weakReference<ThreadLocal>{

object value;Entry(ThreadLocal<?>k,object v){
????super(k);
????value?=?v;
}}

ThreadLocalMap 中,也是用 Entry 來保存 K-V 結(jié)構(gòu)數(shù)據(jù)的。不過 Entry 中的 key 只能是 ThreadLocal 對(duì)象,這點(diǎn)在構(gòu)造方法中已經(jīng)限定死了。

另外,Entry 繼承 WeakReference,也就是 **key(ThreadLocal)**是弱引用,其目的是將 ThreadLocal 對(duì)象的生命周期和線程生命周期解綁。

弱引用和內(nèi)存泄漏

有些程序員在使用 ThreadLocal 的過程中會(huì)發(fā)現(xiàn)有內(nèi)存泄漏的情況發(fā)生,就猜測(cè)這個(gè)內(nèi)存泄漏跟Entry中使用了弱引用的 key 有關(guān)系。這個(gè)理解其實(shí)是不對(duì)的。

我們先來回顧這個(gè)問題中涉及的幾個(gè)名詞概念,再來分析問題。

內(nèi)存泄漏相關(guān)概念

Memory overflow:內(nèi)存溢出,沒有足夠的內(nèi)存提供申請(qǐng)者使用。

Memory leak:內(nèi)存泄漏是指程序中己動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無(wú)法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)潰等嚴(yán)重后果。I內(nèi)存泄漏的堆積終將導(dǎo)致內(nèi)存溢出。

弱引用相關(guān)概念

Java中的引用有4種類型:強(qiáng)、軟、弱、虛。當(dāng)前這個(gè)問題主要涉及到強(qiáng)引用和弱引用:

強(qiáng)引用:就是我們最常見的普通對(duì)象引用,只要還有強(qiáng)引用指向一個(gè)對(duì)象,就能表明對(duì)象還“活著”,垃圾回收器就不會(huì)回收這種對(duì)象。

弱引用:垃圾回收器一旦發(fā)現(xiàn)了只具有弱引用的對(duì)象,不管當(dāng)前內(nèi)存空間足夠與否,都會(huì)回收它的內(nèi)存。

如果key使用強(qiáng)引用,那么會(huì)出現(xiàn)內(nèi)存泄漏?

假設(shè) ThreadLocalMap 中的 key 使用了強(qiáng)引用,那么會(huì)出現(xiàn)內(nèi)存泄漏嗎?

此時(shí) ThreadLocal 的內(nèi)存圖(實(shí)線表示強(qiáng)引用)如下:

ThreadLocal內(nèi)存圖
  • 假設(shè)在業(yè)務(wù)代碼中使用完 ThreadLocal,threadLocal Ref被回收了

  • 但是因?yàn)?threadLocalMapEntry 強(qiáng)引用了 threadLocal,造成 threadLocal 無(wú)法被回收。

  • 在沒有手動(dòng)刪除這個(gè) Entry 以及 CurrentThread 依然運(yùn)行的前提下,始終有強(qiáng)引用鏈 threadRef->currentThread->threadLocalMap->entry,Entry 就不會(huì)被回收( Entry 中包括了ThreadLocal實(shí)例和value),導(dǎo)致Entry內(nèi)存泄漏。

也就是說,ThreadLocalMap 中的 key 使用了強(qiáng)引用,是無(wú)法完全避免內(nèi)存泄漏的。

如果key使用弱引用,那么會(huì)出現(xiàn)內(nèi)存泄漏?

ThreadLocal內(nèi)存圖
  • 同樣假設(shè)在業(yè)務(wù)代碼中使用完 ThreadLocal ,threadLocal Ref 被回收了。

  • 由于 ThreadLocalMap 只持有 ThreadLocal 的弱引用,沒有任何強(qiáng)引用指向 threadlocal 實(shí)例,所以threadlocal 就可以順利被 gc 回收,此時(shí) Entry 中的 key=null 。

  • 但是在沒有手動(dòng)刪除這個(gè) Entry 以及 CurrentThread 依然運(yùn)行的前提下,也存在有強(qiáng)引用鏈 threadRef->currentThread->threadLocalMap->entry-> value,value 不會(huì)被回收,而這塊 value 永遠(yuǎn)不會(huì)被訪問到了,導(dǎo)致 value 內(nèi)存泄漏。

也就是說,ThreadLocalMap 中的 key 使用了弱引用,也有可能內(nèi)存泄漏。

出現(xiàn)內(nèi)存泄漏的真實(shí)原因

比較以上兩種情況,我們就會(huì)發(fā)現(xiàn),內(nèi)存泄漏的發(fā)生跟 ThreadLocalMap 中的 key 是否使用弱引用是沒有關(guān)系的。那么內(nèi)存泄漏的的真正原因是什么呢?

細(xì)心的同學(xué)會(huì)發(fā)現(xiàn),在以上兩種內(nèi)存泄漏的情況中,都有兩個(gè)前提:

  • 沒有手動(dòng)刪除這個(gè) Entry

  • CurrentThread 依然運(yùn)行

第一點(diǎn)很好理解,只要在使用完 ThreadLocal,調(diào)用其 remove 方法刪除對(duì)應(yīng)的 Entry,就能避免內(nèi)存泄漏。

第二點(diǎn)稍微復(fù)雜一點(diǎn),由于 ThreadLocalMapThread 的一個(gè)屬性,被當(dāng)前線程所引用,所以它的生命周期跟 Thread 一樣長(zhǎng)。那么在使用完 ThreadLocal 的使用,如果當(dāng)前 Thread 也隨之執(zhí)行結(jié)束,ThreadLocalMap 自然也會(huì)被 gc 回收,從根源上避免了內(nèi)存泄漏。

綜上,ThreadLocal 內(nèi)存泄漏的根源是:由于 ThreadLocalMap 的生命周期跟 Thread 一樣長(zhǎng),如果沒有手動(dòng)刪除對(duì)應(yīng) key 就會(huì)導(dǎo)致內(nèi)存泄漏。

為什么要使用弱引用?

根據(jù)剛才的分析,我們知道了:無(wú)論 ThreadLocalMap 中的 key 使用哪種類型引用都無(wú)法完全避免內(nèi)存泄漏,跟使用弱引用沒有關(guān)系。

要避免內(nèi)存泄漏有兩種方式:

  • 使用完 ThreadLocal,調(diào)用其 remove 方法刪除對(duì)應(yīng)的 Entry

  • 使用完 ThreadLocal,當(dāng)前 Thread 也隨之運(yùn)行結(jié)束

相對(duì)第一種方式,第二種方式顯然更不好控制,特別是使用線程池的時(shí)候,線程結(jié)束是不會(huì)銷毀的,而是接著放入了線程池中。

也就是說,只要記得在使用完 ThreadLocal 及時(shí)的調(diào)用 remove,無(wú)論 key 是強(qiáng)引用還是弱引用都不會(huì)有問題。那么為什么 key 要用弱引用呢?

事實(shí)上,在 ThreadLocalMap 中的 set / getEntry 方法中,會(huì)對(duì) keynull(也即是 ThreadLocalnull)進(jìn)行判斷,如果為 null 的話,那么是會(huì)對(duì) value 置為 null 的。

這就意味著使用完 ThreadLocal,CurrentThread 依然運(yùn)行的前提下,就算忘記調(diào)用 remove 方法,弱引用比強(qiáng)引用可以多一層保障:弱引用 的ThreadLocal 會(huì)被回收,對(duì)應(yīng)的 value 在下一次 ThreadLocalMap 調(diào)用set,get,remove 中的任一方法的時(shí)候會(huì)被清除,從而避免內(nèi)存泄漏。

瀏覽 67
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 中国免费一级无码成人片| 国产操| 久久久久99精品成人网站| AV网站免费在线观看| 中文字幕免费在线观看视频| 欧美日韩免费在线视频| av不卡免费观看| 亚洲成人黄色电影| 国产福利在线播放| 韩国精品一区二区| 黄色视频在线观看国产| 国产三级片在线观看视频| 亚洲一区久久| 中文字幕免费无码| 亚洲综合中文字幕在线播放| 久久精品视频播放| 激情草逼| 中出欧美亚洲| 91在线观看高清18| 亚洲欧美精品| 麻豆精品久久久久久久99蜜桃| 一区二区三区中文字幕| 伊人大香蕉电影| 国产精品五月天| 182在线视频| 欧美日韩日逼视频| 国产九九热| 国产乱伦视屏| 激情青青草| 日韩无码18| 久久午夜无码鲁片午夜精品男男 | 欧美成人电影| 青草久在线| 佳佳女王footjob超级爽 | AV中文字幕电影| 日韩A区| 吴梦梦md0069| 青青草东路热vv| 人人摸人人爱| 大香蕉AV在线| 成人在线免费视频| 91久久爽久久爽爽久久片| 日日干天天操| 国产成人精品一区二区三区在线 | 亚洲热视频在线观看| 国产性生活视频| 激情五月天色色| 中文字幕无码A片久久| 狠狠色狠狠操| 在线啪| 日韩AA视频| 国产一级婬乱A片| 亚洲图片在线观看| 午夜天堂在线观看| 国产精品免费网站| 少妇成人网| 大香蕉在线视频观看| 國模久久| 视频一视频二在线视频| 人人妻人人爱| 久久久麻豆| 欧美日韩在线电影| 91丨露脸丨熟女抽搐| www.91AV| 美日韩精品| 日本一级黄| 欧美成人网址在线观看| 亚洲成人黄色在线| 一级A片黃色A片| 中文乱码在线观看| 熟妇人妻中文字幕无码老熟妇| 日批网站在线观看| 伊人激情五月天| 亚洲成人免费网站| 日韩爱爱视频| 尻屄网站| 三级片无码麻豆视频| 翔田千里无码A片| 国产av网| 无码人妻AⅤ一区二区三区| 成人片网站在线观看| 大香蕉福利在线| 97操逼网| 午夜日韩乱伦| 国产黄色大片| 在线观看av资源| 国产精品v欧美精品v日韩精品| 国产一区二区三区视频在线| 亚洲国产精品自| 91最新国产| 国产欧美日韩三级| 最新中文字幕在线播放| 久久久久久麻豆| 婷婷五月天av| 黄片一区二区| 精品视频在线播放| 蜜桃视频在线观看18| 亚洲天堂在线播放| 三级电影久久麻豆| 性饥渴欧美老妇XXXXX| 激情中文网| 91精品国产综合久久久蜜臀图片| 国产真人无码| 久久婷婷五月丁香| 91爱爱·com| 伊人99re| 亚洲精品日韩综合观看成人91| 性猛交╳XXX乱大交| 色欲99| 中文毛片| 无码中文视频| 五月天婷婷操逼视频| 777欧美| 国产人妻中文字幕| 亚洲色图88| 青青青亚州视频在线| 北条麻妃JUX-869无码播放 | 免费成人在线网站| 久久露脸国语精品国产91| 91精品国产乱码久久| 免费视频爱爱| 亚洲先锋影音| 久久久久蜜桃| 日本精品无码a62v在线| 亚洲夜夜撸| 亚洲成人三区| 三级免费无限AV| 99cao| 男女视频网站在线观看| 日本成人免费| 午夜免费无码| 国产口爆在线观看| 91在线| 操一操影院| 国产黄色自拍视频| 开心色婷婷| 福利大香蕉| 精品国产AV无码一区二区三区| 色婷在线视频| 亚洲AV无码精品久久一区二区 | 五月伊人网| 五月天网址| 国产成人a亚洲精品www| 久久免费毛片| 国产又粗又黄| 精品一区二区三区在线观看| 在线观看视频黄| 一级黄色视频网站| 午夜黄片| 国产一级a毛一级a做免费的视频| 久操免费在线观看| 波多野结衣一二三区| www.狠狠爱| 一区二区三区四区免费观看| 亚洲AV成人无码精在线| 露脸偷拍AV2025| 成人无码高清在线观看| 欧美日韩成人网站| 日韩中文字幕精品| 91九色91蝌蚪91窝成人| 日本精品视频在线观看| 三级丁香在线| 日本精品在线观看视频| 日韩日批视频| 韩国三级HD久久精品HD| 久草热在线| 激情五月综合| 91麻豆精品91久久久久同性| 嫩草在线播放| 啪啪网站免费观看| 国产欧美精品一区二区色综合| 国产综合第一页| 中文字幕av高清片,中文在线观看| 亚洲成人无码片| 成人小说亚洲一区二区三区| av在线免费观看网址| 黄色美女网站| 一区二区亚洲| 老司机精品视频在线观看| 真人一级片| 色欲网| 高H视频在线观看| 日韩无码中字| 天天夜夜爽| 国产成人精品久久二区二区91 | 一本久道综合| 激情网站在线| 91狠狠综| 中文字幕乱码人妻二区三区| 极品小仙女69| 欧美插插| 围内精品久久久久久久久久‘变脸 | 91sese| 国产无遮挡又黄又爽又| 三级毛片在线| 99视频久久| 国产成人午夜| 欧美亚洲三级片| 亚欧精品久久久| 国产草草| 日韩精品人妻中文字幕蜜乳| 中文字幕免费看高清| 欧美成人免费观看| 97爱爱爱| 国产成人无码一区二区在线| 黄色视频在线免费观看高清视频| 日韩在线免费看| www.插插| 超碰在线观看91| 国产A片录制现场妹子都很多| 国产精品一区一区三区| 无码人妻一区二区三区免水牛视频 | A片免费观看视频| 国产又粗又猛又爽又黄91精品| 黄色片一区二区| 亚洲欧美视频在线观看| 黄色大片av| 一区二区三区无码专区| 牛牛精品视频| 加勒比无码在线| 91毛片观看| 88无码| 无码一卡| www.中文字幕| 亚洲人人18XXX—20HD| 久久精品视频网站| 欧美日本亚洲| 麻豆国产成人AV一区二区三区| 黄色亚洲网站| 狠狠躁夜夜躁人爽| 三级片国产| 欧美一级生活片| 美女掰穴| 天堂一区二区三区| 亚洲日韩AV电影| 69成人视频| 大香蕉网视频| 成人在线18禁| 欧美亚洲日韩在线观看| 亚洲日韩中文无码| 91丨牛牛丨国产人妻| 亚洲AV人人夜夜澡人人| 免费v片在线观看| 九九热毛片在线观看| 男人的天堂视频在线| 一区二区日本| 欧美爱爱网| 国产精品毛片VA一区二区三区| 91av免费在线观看| 免费激情网站| 午夜理论在线| 色婷婷一区二区三区久久| 无码人妻一区二区三区精品不付款| 水蜜桃视频网站在线观看| 少妇搡BBBB搡BBB搡造水多/| 亚洲精品资源| 国产婷婷内射| 免费视频无码| 激情黄色五月天| 成人a电影| 91丝袜一区在线观看| 中文字幕在线观看免费| 亚洲无码色婷婷| 中文字幕一区在线| 精品无码国产一区二区三区51安| 蜜芽视频| 日本高清黄色视频| 亚洲婷婷丁香| 蜜桃成人无码区免费视频网站| 婷婷成人电影| 国产一毛a一毛a在线观看| 亚州免费视频| 国产免费一区二区在线A片视频| 大香蕉99热| 91视频国产精品| 成人一级片| 黄片网站免费在线观看| 亚洲欧美日韩久久| 黄色电影一级| 亚洲日韩视频在线播放| 在线黄网| 亚洲不卡一区二区三区| 一二区视频| 午夜福利av在线| 一区二区三区精品无码| 亚洲无码视频播放| 99精品亚洲| 翔田千里无码在线| 一本色道88久久加勒比精品| 爱爱免费看片| 久久婷婷秘精品国产538| 色噜噜狠狠一区二区三区300部 | 国产夫妻自拍AV| 欧美黄色一级| 高清无码免费观看视频| 污污污www精品国产网站| 五月亭亭在线视频| 青草国产视频| 黄色大片AV| 日韩第1页| 18禁在线播放| 中文字幕+乱码+中文乱码视频在线观看 | 影音先锋av资源网站| 91爱爱| 成年人黄色视频网站| 狠狠操av| 强伦人妻一区二区三区视频| 亚洲天堂一区二区三区| av资源播放| 91精品国产综合久久久蜜臀主演| 国产黄h| 免费无码一级A片大黄在线观看| 中文字幕乱码亚洲无线码在线日噜噜| 青娱乐无码视频| 国产精品国产精品国产专区不卡 | 天堂久久久久| 蜜桃av秘无码一区三区四| 操逼超碰| 色啪视频| 三区在线观看| 香蕉久久a毛片| 国产成人三级片在线观看| 三级视频网| 老司机精品视频在线观看| 影音先锋AV在线资源| 蜜桃免费AV| 日韩综合在线视频| 亚洲综合社区在线| 神马午夜福利影院| 狼人亚洲伊人| 欧美二区三区| 日韩欧美在线视频| 蜜臀av在线播放| 91日逼| 欧美日韩亚洲成人| 嫩草人人精品免费| 成人黄色电影在线| 国产精品内射| 99久久精品国产一区二区三区| 91视频亚洲| 亚洲中文字幕在线视频播放| 免费激情网站| 欧美小黄片| 欧美三级片在线播放| 日本道在线视频| av在线无码| 国产乱子伦一区二区三区免看| 精品免费国产一区二区三区四区的使用方法| 免费视频爱爱| 人人妻人人干| 成人免费A片在线观看直播96| www.欧美| 97大香蕉在线视频| 国产高清自拍| 影音先锋成人无码| 成人免费视频性爱| 久草在线资源| 亚洲欧洲成人| 婷婷五月18永久免费视频| 口爆吞精在线| 永久黄网站| 亚洲黄色在线免费观看| 三级AV在线| 国产成人久久777777| 91三级视频| 瑟瑟免费视频| 性爱国产| 黄色三级片视频| 无码一区二区三区在线| 婷婷久热| 囯产精品宾馆在线精品酒店| 成人精品秘久久久按摩下载| 天天色天天干天天日| 国产精品一区二区在线播放 | 黄色成人网站在线播放| 亚洲一本色道中文无码| 草少妇| 五月天堂婷婷| 性无码一区二区三区无码免费| 日逼无码视频| 97人妻视频| 久久国产日韩| 波多野结衣AV在线播放| 91婷婷射| 国产视频久久久| 豆花视频在线看| 91婷婷| 青青在线免费视频| 日本精品电影| 西西444WWW无码精品| 久久动图| 国产福利一区二区| 一区二区三区四区在线视频| a免费视频| 操BBB操BBB| 欧美一区二区三区视频| 欧美亚洲日韩一区二区| 91欧美黑人| 九九热re99re6在线精品| 免费看一级高潮毛片| 日批国产| 色婷婷中文在线| 天天干女人| 午夜偷拍视频| 热逼视频| 色婷婷五月天在线观看| 国产成人精品无码片区在线观91| 无码777| 97性爱视频| 色女人天堂| 欧美群交videotv群交| 青娱乐av| 美女黄色网| 日韩一区二区三区在线视频| 岛国精品在线播放| 亚洲综合视频网| 另类老妇奶性生BBwBB| AA片视频| 欧美A级黄片| 成人福利网站| 日本在线一级| 中文字幕精品人妻在线| 9999国产精品| 伊人久久大香蕉视频| 国产精品久久久久久久久久久免费看 | 日韩黄色视频在线观看| 亚洲第一av| 精品视频999| 亚洲口味重一级黄片| 91啦丨露脸丨熟女色啦| 好逼天天操| 俺来了俺去了| 福利无码| 免费成人在线网站| 国产黄色视频在线免费观看| av一区在线观看| eeuss| 欧美成人视屏| 伊人久久大香蕉国产| 日韩一区二区三区视频| 中文字幕无码网站| 欧美在线观看网站18| 国产色无码网站www色视频| 99久久精品国产成人一区二区 | 无码中文字幕在线观看| 亚洲.欧美.丝袜.中文.综合| 人人妻人人做| 一级A片亲子乱| 三级黄色视频在线观看| 国产毛片欧美毛片高潮| 久草福利在线视频| 美日韩无码视频| 亚洲香蕉av| 欧美精品三级| 加勒比人妻| 熟女人妻一区二区三区| 亚洲无码av在线播放| 国产资源AV| 蜜臀AV一区二区三区免费看| 精品乱子伦一区二区三区免费播成| 中文字幕乱伦视频| 初学影院WWWBD英语完整版在线观看 | 开心五月激情婷婷| 超碰碰碰| 日韩精品三区| 国产美女啪啪视频| 无码人妻AV一区| 国产操逼网站| 91网站免费| 久久九一| 国产叼嘿视频| 国产精品性爱视频| 亚洲成人性爱视频| 国产在线观看mv免费全集电视剧大全| 91嫖妓站街按摩店老熟女| 国产精品五月天| 探花在线播放| 国产精品一区二区三区四区| 中文有码视频| 黄色在线观看国产| 精品国产乱码一区二区| 久久xx| 日韩少妇无码视频| 色哟哟一区二区三区四区| 91牛| 影音先锋av资源网站| 精品久热| 亚洲色在线播放| 欧美性爱无码| 精品无码视频在线观看| 久久私拍视频| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 吴梦梦| 麻豆视频在线观看| 午夜福利三级| 超碰在线图片| 激情av在线观看| 国产白丝在线| 91在线无码精品秘国产-百度| 青娱乐在线精品| 手机看片午夜福利网| 婷婷在线综合| 黄色视频导航| 99热在线观看者| 久久R5| AV无码免费观看| 91精品国产乱码香蕉黄瓜草莓| 婷婷国产| 最近中文字幕高清2019中文字幕| 狠狠躁日日躁夜夜躁A片无码| 久久国产精品免费视频| 国产乱伦视屏| 柠檬福利第一导航| 欧美中文字幕在线视频| 午夜福利小视频| 国产无遮挡又黄又爽又色视频软件| 黄色A片约| www.人人操| av第一页| 91精品视频在线免费观看| 97色色得| 高清国产AV| 中文字幕av一区二区| 亚洲AV成人电影| 国产卡一卡二在线观看| 五月丁香婷婷综合| av黄色在线| 国产精品乱子伦| 91就去干| 日韩大黄| 亚洲乱伦网| 蜜桃视频成人app| 日本精品黄色| av天堂中文| 波多野结衣av在线观看窜天猴 | 五月丁香中文字幕| 亚洲专区在线播放| 人人操人人模| 伊人网视频在线播放| 天天澡天天爽日日AV| 亚洲欧美一区二区三区在线| 久久艹网| 国产卡一卡二在线| 国产又黄又大又粗的视频| 黄片免费视频| 欧美成人无码A片免费| 久久久久久久久久久成人| 性爱视频网页| 俺去也av| 无套进入无套内谢| 大香蕉亚洲| 天天撸天天射| 91丝袜一区在线观看| 国产资源AV| 国产精品一区二区AV日韩在线 | 精品一二三区| 国产传媒视频| 欧美肉大捧一进一出小说| 亚洲午夜电影| 中文字幕成| TokyoKot大交乱无码| 中文字幕在线无码| 91人妻人人爽| 日韩激情网站| 无码免费毛片一区二区三区古代| 无码热| 按摩性高湖婬AAA片A片中国| 久久成人电影| 国产乱妇无码毛片A片在线看下载 日韩电影免费在线观看中文字幕 欧美性爱中文字幕 | 毛片小电影| 暴操美女网站| 亚洲一区| 牛牛在线视频| 午夜精品久久久久久久| 最近中文字幕在线| 校园春色亚洲无码| 风间由美大荫蒂无码AV| 五月天深爱激情网| 天天舔| 天天操操操| 欧洲一区二区| 四川少扫搡BBBBB搡B| 亚洲日韩欧美在线观看| 亚洲国产成人一区二区| 中文字幕日韩有码| 五月天四房播播| 欧美性极品少妇精品网站| 中文字幕视频一区| 久久99综合| 国产伊人久久| 在线黄色AV| 久久婷婷五月综合伊人| 免费日韩黄色电影| 国产亚洲网| 久久成人一区| 91羞射短视频在线观看| 国产黄色电影在线观看| 国产高清视频在线观看| 中文不卡视频| 99热这里有精品| 国产剧情91| 粉嫩99精品99久久久久| 成人黄色免费在线| 亚洲天堂在线免费观看视频 | 中文字幕在线观看a| 男女日皮视频| 99热99| 翔田千里一区二区| 天天摸夜夜操| 成全在线观看高清的| av第一页| 成人性爱在线视频| 国产无码性爱| 美女扣逼网站| 国产3p绿帽骚妻视频| 国产在线观看mv免费全集电视剧大全| 日本三级AAA三级AAAA97| 大鸡巴午夜爽视频电影| 蜜桃久久| 欧美精产国品一二三| 东方AV在线观看| 欧美a在线观看| 无码人妻精品一区二区三区99仓| 久久久久一| 91人妻综合| 91精品成人| 成人网站www污污污网站公司| 亚洲日韩一级| 狼色AV| 天天操夜夜操狠狠| 大香蕉大香蕉免费网| 天堂综合网久久| 女公务员人妻呻吟求饶| 欧美性之站| 瘦精品无码一区二区三区四区五区六区七区八区 | 狠狠躁日日躁夜夜躁A片小说免费| 亚洲一本之道| 免费国产在线视频| 国产又粗又黄| 亚洲三级av| 91久久无码一区人妻A片蜜桃| av東熱激情东京热| 女邻居的B好大| 午夜成人无码视频| 韩国成人免费无码免费视频| 精品久久三级片| 成人黄网站免费观看| 欧美一级特黄AAAAAA片在线视频 | 高清中字无码| 乱轮少妇| 一级A片免费黄色视频| 亚洲无码高清在线| 在线免费看黄色| 国产又爽又黄免费网站免费观看| 精品人妻无码| 亚洲免费观看高清| 大香蕉伊人视频| 玩弄小怮女在线观看| 五月丁香五月婷婷| 在线观看亚洲视频| 好吊视频一区二区三区四区| 精品人妻一区二区三区日产| 亚洲午夜AV久久乱码| 插插视频| 有码中文字幕| 欧美另类色图| 91在线观看高清18| 色噜噜狠狠一区二区三区Av蜜芽| 在线看A片| 亚洲视频无码| 国产成人电影| 日本老妇操屄视频| 欧美级毛片高潮| 亚洲午夜久久久之蝌蚪窝| 久久99精品久久久久婷婷| 亚洲国产精品久久久久婷婷老年| 国产免费看| 国产麻豆精品ThePorn| 久久黄色视频免费看| 国产一级a毛片| 91大熟女91大腚女人| 波多野结衣视频在线观看| 国产极品无码| 一起操影院| 国语精品自拍| 日韩一级性爱视频| 蜜桃av无码一区三区| 熟妇熟女一区二区三区| 最新中文字幕在线观看视频| 久久久精品午夜人成欧洲亚洲韩国 | 日韩精品丰满无码一级A片∴| 色吊丝中文字幕| 中文字幕在线不卡视频| 成人在线欧美| 免费黄片视频在线观看| 免费在线看黄色| 午夜黄色影院| 操B视频在线观看| 老鸭窝毛片| 操操影院| 亚洲精品一区无码A片丁香花| 久久99久久视频| 3DAV一区二区三区动漫| 鲁鲁鲁鲁鲁鲁鲁777777| 丁香婷婷网| 丁香综合网| 中文字幕精品一区| 豆花天天吃最新视频| 伊人国产女| 黄色视频网站在线观看免费| 亚洲夜夜撸| 无码国产精品一区二区免费式直播 | 免费观看久久久| 一级操逼大片| 日韩黄色免费网站| 91一起草高清资源| 91艹逼| 九九久久99| 91调教视频| 大香伊人久久| 国产A片免费看| 亚洲黄色电影在线观看| 韩国中文字幕HD久久精品| 熟女啪啪| 黄色人妻| 天天激情站| 俺去俺来也www色官网黑人| 成人视频一区| 日本免费视频| 九九热精品视频在线播放| 黄色三级片网站| 黄色大片久草| 亚州黄色电影| 成人网站一区二区| 男人的天堂网页| 久久无码一区二区| 亚洲成人久久久| 久久视频精品| 日日AV| 日韩中文性受视频| 人人人妻人人人操| 日本中文字幕精品| 亚洲有码中文字幕| 欧美伦妇AAAAAA片| 日本黄在线观看| 最新一区二区三区| 91视频网站| 牛牛影视一区二区| 国产精品嫩草久久久久yw193| 91无码人妻精品1国产四虎| 国产多人搡BBBB槡BBBB | 91精品电影18| 午夜做爱福利视频| 欧美性爱无码在线| 天天干欧美| 久久久久久免费毛片精品| A级黄色电影| 免费的AV| 亚洲无码天堂| 豆花无码视频一区二区| 先锋AV资源在线| yw视频在线观看| 国模一区二区| 免费三级网址| 肏逼网| 99热在线观看精品| 久干妞| 国产口爆在线观看| 久久国产性爱| 激情乱伦视频| 国产日本在线视频| 六月婷婷在线| 好男人av| 三级片一区二区| 无码专区一区二区三区| 婷婷色综合视频二区| 大香蕉福利在线| 久久成人在线| 欧美成人在线视频网站| 欧美视频免费在线观看| 久操影视| 影音先锋AV成人| 日本亚洲国产| 久久精品苍井空免费一区二| 精品无码在线| 成人伊人网| 日韩毛片在线视频x| 久久青青操| 无码在线不卡| 翔田千里一区二区| 亚洲三级视频| 日日夜夜超碰| 俺去俺来也在线www色情网| 精品成人一区二区三区| 91嫩草久久久天美传媒| 色吧综合网| 梁祝艳谭A级毛片| 操操操综合网| 91视频18| 亚洲一区二区在线| 91美女操逼视频| 91逼站| 日韩久久电影| 亚洲日韩中文字幕在线观看| 肏逼视频免费看| 亚洲国产成人无码a在线播放| 美腿丝袜中文字幕精品| www.911国产| 日韩无任何视频在线观看| 爱搞搞就要爱搞搞| 搡老熟女-91Porn| 好吊视频一区二区| 亚洲黄色在线| 另类综合激情| 欧美性爱69| 九色在线观看| 欧美日韩中国操逼打炮| 欧美AAAAA| 四川少妇bbbbbbbbb| 欧美视频中文字幕| 日本天堂Tv视频在线观看| 日韩黄色激情| 大香蕉尹人视频| 玖玖精品| 成人三级AV在线| 一本之道高清数码大全| 在线观看网址你懂的| 大香蕉伊在线观看| 影音先锋AV资源网站| 青青草免费在线观看| 亚洲欧美日韩电影| 99re| 中文字幕在线播放av| 少妇人妻精品| 中文字幕第98页| 亚洲国产精品成人va在线观看| 亚洲男女啪啪视频| 青青青草视频在线观看| 亚洲国产精品视频| 夜色福利在线看| av影片在线播放| 日本成人黄色视频| 91愛爱| 成人777777免费视频色| AV无码电影| 在线观看中文字幕| 国产精品欧美日韩| 精品日韩一区二区三区| 日韩av免费| 欧美一级特黄AAAAAA片在线视频 | 亚洲天堂无| 国产精品无码7777777| 天天干天天干天天| 午夜亚洲视频| 日韩成人视频在线| 日韩黄色电影在线观看| 日本色影院| 色五月在线视频| 广东BBW搡BBBB搡| 99资源站| 麻豆传媒一区二区| 91国产爽黄| 国产久久视频在线观看| 大地影视中文第三页最新在线观看 | 成人一级黄色片| 日韩高清无码专区| 国产中文| 国产操逼无码| 亚洲AV无码久久精品色无码蜜桃| 2018天天操| 99三级片| 日韩中文字码无砖| 色婷婷AV| 国产精品999999| 美女天天肏| Av天堂图片在线| 久热思思| 人妻无码在线视频| 69成人导航| 成年人黄色视频网站| 亚洲AV高清无码| 国产精品久久久久的角色| 亚洲片在线观看| 97久久精品国产熟妇高清网| 黄网91| 国内精品一区二区三区| 91免费观看视频| 久久久老熟女一区二区三区91| 午夜精品影院| 天天干夜夜爽| 中文字幕AV在线免费观看| 无码视频一区二区三区| 2025av中文字幕| 久久不射网站| av电影在线观看| 亚洲俺去了| 国产做受91一片二片老头| 在线观看视频一区| 久久久久久久久久久久高清毛片一级 | 日韩无码人妻视频|