日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java的wait()、notify()学习三部曲之一:JVM源码分析

發(fā)布時(shí)間:2023/12/8 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的wait()、notify()学习三部曲之一:JVM源码分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文鏈接:https://blog.csdn.net/boling_cavalry/article/details/77793224

綜述

Java的wait()、notify()學(xué)習(xí)三部曲由三篇文章組成,內(nèi)容分別是:
一、通過(guò)閱讀openjdk8的源碼,分析和理解wait,notify在JVM中的具體執(zhí)行過(guò)程;
二、修改JVM源碼,編譯構(gòu)建成新的JVM,把我們感興趣的參數(shù)打印出來(lái),結(jié)合具體代碼檢查和我們的理解是否一致;
三、修改JVM源碼,編譯構(gòu)建成新的JVM,按照我們的理解去修改關(guān)鍵參數(shù),看能否達(dá)到預(yù)期效果;

現(xiàn)在,咱們一起開始既漫長(zhǎng)又深入的wait、notify學(xué)習(xí)之旅吧!

wait()和notify()的通常用法

Java多線程開發(fā)中,我們常用到wait()和notify()方法來(lái)實(shí)現(xiàn)線程間的協(xié)作,簡(jiǎn)單的說(shuō)步驟如下:
1. A線程取得鎖,執(zhí)行wait(),釋放鎖;
2. B線程取得鎖,完成業(yè)務(wù)后執(zhí)行notify(),再釋放鎖;
3. B線程釋放鎖之后,A線程取得鎖,繼續(xù)執(zhí)行wait()之后的代碼;

關(guān)于synchronize修飾的代碼塊

通常,對(duì)于synchronize(lock){…}這樣的代碼塊,編譯后會(huì)生成monitorenter和monitorexit指令,線程執(zhí)行到monitorenter指令時(shí)會(huì)嘗試取得lock對(duì)應(yīng)的monitor的所有權(quán)(CAS設(shè)置對(duì)象頭),取得后即獲取到鎖,執(zhí)行monitorexit指令時(shí)會(huì)釋放monitor的所有權(quán)即釋放鎖;

一個(gè)完整的demo

為了深入學(xué)習(xí)wait()和notify(),先用完整的demo程序來(lái)模擬場(chǎng)景吧,以下是源碼:

public class NotifyDemo {private static void sleep(long sleepVal){try{Thread.sleep(sleepVal);}catch(Exception e){e.printStackTrace();}}private static void log(String desc){System.out.println(Thread.currentThread().getName() + " : " + desc);}Object lock = new Object();public void startThreadA(){new Thread(() -> {synchronized (lock){log("get lock");startThreadB();log("start wait");try {lock.wait();}catch(InterruptedException e){e.printStackTrace();}log("get lock after wait");log("release lock");}}, "thread-A").start();}public void startThreadB(){new Thread(()->{synchronized (lock){log("get lock");startThreadC();sleep(100);log("start notify");lock.notify();log("release lock");}},"thread-B").start();}public void startThreadC(){new Thread(() -> {synchronized (lock){log("get lock");log("release lock");}}, "thread-C").start();}public static void main(String[] args){new NotifyDemo().startThreadA();} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

以上就是本次實(shí)戰(zhàn)用到的demo,代碼功能簡(jiǎn)述如下:

  • 啟動(dòng)線程A,取得鎖之后先啟動(dòng)線程B再執(zhí)行wait()方法,釋放鎖并等待;
  • 線程B啟動(dòng)之后會(huì)等待鎖,A線程執(zhí)行wait()之后,線程B取得鎖,然后啟動(dòng)線程C,再執(zhí)行notify喚醒線程A,最后退出synchronize代碼塊,釋放鎖;
  • 線程C啟動(dòng)之后就一直在等待鎖,這時(shí)候線程B還沒有退出synchronize代碼塊,鎖還在線程B手里
  • 線程A在線程B執(zhí)行notify()之后就一直在等待鎖,這時(shí)候線程B還沒有退出synchronize代碼塊,鎖還在線程B手里
  • 線程B退出synchronize代碼塊,釋放鎖之后,線程A和線程C競(jìng)爭(zhēng)鎖;
  • 把上面的代碼在Openjdk8下面執(zhí)行,反復(fù)執(zhí)行多次,都得到以下結(jié)果:

    thread-A : get lock thread-A : start wait thread-B : get lock thread-C : c thread is start thread-B : start notify thread-B : release lock thread-A : after wait, acquire lock again thread-A : release lock thread-C : get lock thread-C : release lock
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    針對(duì)以上結(jié)果,問(wèn)題來(lái)了:
    第一個(gè)問(wèn)題:
    將以上代碼反復(fù)執(zhí)行多次,結(jié)果都是B釋放鎖之后A會(huì)先得到鎖,這又是為什么呢?C為何不能先拿到鎖呢?

    第二個(gè)問(wèn)題:
    線程C自開始就執(zhí)行了monitorenter指令,它能得到鎖是容易理解的,但是線程A呢?在wait()之后并沒有沒有monitorenter指令,那么它又是如何取得鎖的呢?

    wait()、notify()這些方法都是native方法,所以只有從JVM源碼尋找答案了,本次閱讀的是openjdk8的源碼;

    帶上問(wèn)題去看JVM源碼

    按照demo代碼執(zhí)行順序,我整理了如下問(wèn)題,帶著這些問(wèn)題去看JVM源碼可以聚焦主線,不要被一些支線的次要的代碼卡住(例如一些異常處理,監(jiān)控和上報(bào)等):
    1. 線程A在wait()的時(shí)候做了什么?
    2. 線程C啟動(dòng)后,由于此時(shí)線程B持有鎖,那么線程C此時(shí)在干啥?
    3. 線程B在notify()的時(shí)候做了什么?
    4. 線程B釋放鎖的時(shí)候做了什么?

    源碼中最重要的注釋信息

    在源碼中有段注釋堪稱是整篇文章最重要的說(shuō)明,請(qǐng)大家始終記住這段信息,處處都用得上:

    ObjectWaiter對(duì)象存在于WaitSet、EntryList、cxq等集合中,或者正在這些集合中移動(dòng)

    原文如下:

    請(qǐng)務(wù)必記住這三個(gè)集合:WaitSet、EntryList、cxq

    好了,接下來(lái)看源碼分析問(wèn)題吧:

    線程A在wait()的時(shí)候做了什么

    打開hotspot/src/share/vm/runtime/objectMonitor.cpp,看ObjectMonitor::wait方法:

    如上圖所示,有兩處代碼值得我們注意:
    1. 綠框中將當(dāng)前線程包裝成ObjectWaiter對(duì)象,并且狀態(tài)為TS_WAIT,這里對(duì)應(yīng)的是jstack看到的線程狀態(tài)WAITING;
    2. 紅框中調(diào)用了AddWaiter方法,跟進(jìn)去看下:

    這個(gè)ObjectWaiter對(duì)象被放入了_WaitSet中,_WaitSet是個(gè)環(huán)形雙向鏈表(circular doubly linked list)

    回到ObjectMonitor::wait方法接著往下看,會(huì)發(fā)現(xiàn)關(guān)鍵代碼如下圖,當(dāng)前線程通過(guò)park()方法開始掛起(suspend):

    至此,我們把wait()方法要做的事情就理清了:
    1. 包裝成ObjectWaiter對(duì)象,狀態(tài)為TS_WAIT;
    2. ObjectWaiter對(duì)象被放入_WaitSet中;
    3. 當(dāng)前線程掛起;

    線程B持有鎖的時(shí)候線程C在干啥

    此時(shí)的線程C無(wú)法進(jìn)入synchronized{}代碼塊,用jstack看應(yīng)該是BLOCKED狀態(tài),如下圖:

    我們看看monitorenter指令對(duì)應(yīng)的源碼吧,位置:openjdk/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp

    IRT_ENTRY_NO_ASYNC(void, InterpreterRuntime::monitorenter(JavaThread* thread, BasicObjectLock* elem)) #ifdef ASSERTthread->last_frame().interpreter_frame_verify_monitor(elem); #endifif (PrintBiasedLockingStatistics) {Atomic::inc(BiasedLocking::slow_path_entry_count_addr());}Handle h_obj(thread, elem->obj());assert(Universe::heap()->is_in_reserved_or_null(h_obj()),"must be NULL or an object");if (UseBiasedLocking) {// Retry fast entry if bias is revoked to avoid unnecessary inflationObjectSynchronizer::fast_enter(h_obj, elem->lock(), true, CHECK);} else {ObjectSynchronizer::slow_enter(h_obj, elem->lock(), CHECK);}assert(Universe::heap()->is_in_reserved_or_null(elem->obj()),"must be NULL or an object"); #ifdef ASSERTthread->last_frame().interpreter_frame_verify_monitor(elem); #endif IRT_END
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    上面的代碼有個(gè)if (UseBiasedLocking)判斷,是判斷是否使用偏向鎖的,本例中的鎖顯然已經(jīng)不屬于當(dāng)前線程C了,所以我們還是直接看slow_enter(h_obj, elem->lock(), CHECK)方法吧;

    打開openjdk/hotspot/src/share/vm/runtime/synchronizer.cpp:

    void ObjectSynchronizer::slow_enter(Handle obj, BasicLock* lock, TRAPS) {markOop mark = obj->mark();assert(!mark->has_bias_pattern(), "should not see bias pattern here");//是否處于無(wú)鎖狀態(tài)if (mark->is_neutral()) {// Anticipate successful CAS -- the ST of the displaced mark must// be visible <= the ST performed by the CAS.lock->set_displaced_header(mark);//無(wú)鎖狀態(tài)就去競(jìng)爭(zhēng)鎖if (mark == (markOop) Atomic::cmpxchg_ptr(lock, obj()->mark_addr(), mark)) {TEVENT (slow_enter: release stacklock) ;return ;}// Fall through to inflate() ...} elseif (mark->has_locker() && THREAD->is_lock_owned((address)mark->locker())) {//如果處于有鎖狀態(tài),就檢查是不是當(dāng)前線程持有鎖,如果是當(dāng)前線程持有的,就return,然后就能執(zhí)行同步代碼塊中的代碼了assert(lock != mark->locker(), "must not re-lock the same lock");assert(lock != (BasicLock*)obj->mark(), "don't relock with same BasicLock");lock->set_displaced_header(NULL);return;}#if 0// The following optimization isn't particularly useful.if (mark->has_monitor() && mark->monitor()->is_entered(THREAD)) {lock->set_displaced_header (NULL) ;return ;} #endif// The object header will never be displaced to this lock,// so it does not matter what the value is, except that it// must be non-zero to avoid looking like a re-entrant lock,// and must not look locked either.lock->set_displaced_header(markOopDesc::unused_mark());//鎖膨脹ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD); }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    線程C在上面代碼中的執(zhí)行順序如下:
    1. 判斷是否是無(wú)鎖狀態(tài),如果是就通過(guò)Atomic::cmpxchg_ptr去競(jìng)爭(zhēng)鎖;
    2. 不是無(wú)鎖狀態(tài),就檢查當(dāng)前鎖是否是線程C持有;
    3. 不是線程C持有,調(diào)用inflate方法開始鎖膨脹;

    ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD);

    來(lái)看看鎖膨脹的源碼:

    如上圖,鎖膨脹的代碼太長(zhǎng),我們這里只看關(guān)鍵代碼吧:
    紅框中,如果當(dāng)前狀態(tài)已經(jīng)是重量級(jí)鎖,就通過(guò)mark->monitor()方法取得ObjectMonitor指針再返回;
    綠框中,如果還不是重量級(jí)鎖,就檢查是否處于膨脹中狀態(tài)(其他線程正在膨脹中),如果是膨脹中,就調(diào)用ReadStableMark方法進(jìn)行等待,ReadStableMark方法執(zhí)行完畢后再通過(guò)continue繼續(xù)檢查,ReadStableMark方法中還會(huì)調(diào)用os::NakedYield()釋放CPU資源;

    如果紅框和綠框的條件都沒有命中,目前已經(jīng)是輕量級(jí)鎖了(不是重量級(jí)鎖并且不處于鎖膨脹狀態(tài)),可以開始膨脹了,如下圖:

    簡(jiǎn)單來(lái)說(shuō),鎖膨脹就是通過(guò)CAS將監(jiān)視器對(duì)象OjectMonitor的狀態(tài)設(shè)置為INFLATING,如果CAS失敗,就在此循環(huán),再走前一副圖中的的紅框和綠框中的判斷,如果CAS設(shè)置成功,會(huì)繼續(xù)設(shè)置ObjectMonitor中的header、owner等字段,然后inflate方法返回監(jiān)視器對(duì)象OjectMonitor;

    看看之前slow_enter方法中,調(diào)用inflate方法的代碼如下:

    ObjectSynchronizer::inflate(THREAD, obj())->enter(THREAD);
    • 1

    所以inflate方法返回監(jiān)視器對(duì)象OjectMonitor之后,會(huì)立刻執(zhí)行OjectMonitor的enter方法,這個(gè)方法中開始競(jìng)爭(zhēng)鎖了,方法在openjdk/hotspot/src/share/vm/runtime/objectMonitor.cpp文件中:

    如上圖,紅框中表示OjectMonitor的enter方法一進(jìn)來(lái)就通過(guò)CAS將OjectMonitor的_owner設(shè)置為當(dāng)前線程,綠框中表示設(shè)置成功的邏輯,第一個(gè)if表示重入鎖的邏輯,第二個(gè)if表示第一次設(shè)置_owner成功,都意味著競(jìng)爭(zhēng)鎖成功,而我們的線程C顯然是競(jìng)爭(zhēng)失敗的,會(huì)進(jìn)入下圖中的無(wú)線循環(huán),反復(fù)調(diào)用EnterI方法:

    進(jìn)入EnterI方法看看:

    如上圖,首先構(gòu)造一個(gè)ObjectWaiter對(duì)象node,后面的for(;;)代碼塊中來(lái)是一段非常巧妙的代碼,同一時(shí)刻可能有多個(gè)線程都競(jìng)爭(zhēng)鎖失敗走進(jìn)這個(gè)EnterI方法,所以在這個(gè)for循環(huán)中,用CAS將_cxq地址放入node的_next,也就是把node放到_cxq隊(duì)列的首位,如果CAS失敗,就表示其他線程把node放入到_cxq的首位了,所以通過(guò)for循環(huán)再放一次,只要成功,此node就一定在最新的_cxq隊(duì)列的首位。

    接下來(lái)的代碼又是一個(gè)無(wú)限循環(huán),如下圖:

    從上圖可以看出,進(jìn)入循環(huán)后先調(diào)用TryLock方法競(jìng)爭(zhēng)一次鎖,如果成功了就退出循環(huán),否則就調(diào)用Self->_ParkEvent->park方法使線程掛起,這里有自旋鎖的邏輯,也就是park方法帶了時(shí)間參數(shù),就會(huì)在掛起一段時(shí)間后自動(dòng)喚醒,如果不是自旋的條件,就一直掛起等待被其他條件喚醒,線程被喚醒后又會(huì)執(zhí)行TryLock方法競(jìng)爭(zhēng)一次鎖,競(jìng)爭(zhēng)不到繼續(xù)這個(gè)for循環(huán);

    到這里我們已經(jīng)把線程C在BLOCK的時(shí)候的邏輯理清楚了,小結(jié)如下:

  • 偏向鎖邏輯,未命中;
  • 如果是無(wú)鎖狀態(tài),就通過(guò)CAS去競(jìng)爭(zhēng)鎖,此處由于鎖已經(jīng)被線程B持有,所以不是無(wú)鎖狀態(tài);
  • 不是無(wú)鎖狀態(tài),而且鎖不是線程C持有,執(zhí)行鎖膨脹,構(gòu)造OjectMonitor對(duì)象;
  • 競(jìng)爭(zhēng)鎖,競(jìng)爭(zhēng)失敗就將線程加入_cxq隊(duì)列的首位;
  • 開始無(wú)限循環(huán),競(jìng)爭(zhēng)鎖成功就退出循環(huán),競(jìng)爭(zhēng)失敗線程掛起,等待被喚醒后繼續(xù)競(jìng)爭(zhēng);
  • 線程B在notify()的時(shí)候做了什么

    接下來(lái)該線程B執(zhí)行notify了,代碼是objectMonitor.cpp的ObjectMonitor::notify方法:

    如上圖所示,首先是Policy的賦值,其次是調(diào)用DequeueWaiter()方法將_WaitSet隊(duì)列的第一個(gè)值取出并返回,還記得_WaitSet么?所有wait的線程都被包裝成ObjectWaiter對(duì)象然后放進(jìn)來(lái)了;
    接下來(lái)對(duì)ObjectWaiter對(duì)象的處理方式,根據(jù)Policy的不同而不同:
    Policy == 0:放入_EntryList隊(duì)列的排頭位置;
    Policy == 1:放入_EntryList隊(duì)列的末尾位置;
    Policy == 2:_EntryList隊(duì)列為空就放入_EntryList,否則放入_cxq隊(duì)列的排頭位置;

    如上圖所示,請(qǐng)注意把ObjectWaiter的地址寫到_cxq變量的時(shí)候要用CAS操作,因?yàn)榇藭r(shí)可能有其他線程正在競(jìng)爭(zhēng)鎖,競(jìng)爭(zhēng)失敗的時(shí)候會(huì)將自己包裝成ObjectWaiter對(duì)象加入到_cxq中;

    這里的代碼有一處疑問(wèn),期待著讀著您的指教:如果_EntryList為空,就把ObjectWaiter放入ObjectWaiter中,為什么要這樣做呢?

    Policy == 3:放入_cxq隊(duì)列中,末尾位置;更新_cxq變量的值的時(shí)候,同樣要通過(guò)CAS注意并發(fā)問(wèn)題;

    這里有一段很巧妙的代碼,現(xiàn)將_cxq保存在Tail中,正常情況下將ObjectWaiter賦值給Tail->_next就可以了,但是此時(shí)有可能其他線程正在_cxq的尾部追加數(shù)據(jù)了,所以此時(shí)Tail對(duì)象對(duì)應(yīng)的記錄就不是最后一條了,那么它的_next就非空了,一旦發(fā)生這種情況,就執(zhí)行Tail = Tail->_next,這樣就獲得了最新的_cxq的尾部數(shù)據(jù),如下圖所示:

    Policy等于其他值,立即喚醒ObjectWaiter對(duì)應(yīng)的線程;

    小結(jié)一下,線程B執(zhí)行notify時(shí)候做的事情:

  • 執(zhí)行過(guò)wait的線程都在隊(duì)列_WaitSet中,此處從_WaitSet中取出第一個(gè);
  • 根據(jù)Policy的不同,將這個(gè)線程放入_EntryList或者_(dá)cxq隊(duì)列中的起始或末尾位置;
  • 線程B釋放鎖的時(shí)候做了什么

    接下來(lái)到了揭開問(wèn)題的關(guān)鍵了,我們來(lái)看objectMonitor.cpp的ObjectMonitor::exit方法;

    如上圖,方法一進(jìn)來(lái)先做一些合法性判斷,接下來(lái)如紅框所示,是偏向鎖邏輯,偏向次數(shù)減一后直接返回,顯然線程B在此處不會(huì)返回,而是繼續(xù)往下執(zhí)行;

    根據(jù)QMode的不同,有不同的處理方式:
    1. QMode = 2,并且_cxq非空:取_cxq隊(duì)列排頭位置的ObjectWaiter對(duì)象,調(diào)用ExitEpilog方法,該方法會(huì)喚醒ObjectWaiter對(duì)象的線程,此處會(huì)立即返回,后面的代碼不會(huì)執(zhí)行了;
    2. QMode = 3,并且_cxq非空:把_cxq隊(duì)列首元素放入_EntryList的尾部;
    3. QMode = 4,并且_cxq非空:把_cxq隊(duì)列首元素放入_EntryList的頭部;
    4. QMode = 0,不做什么,繼續(xù)往下看;

    只有QMode=2的時(shí)候會(huì)提前返回,等于0、3、4的時(shí)候都會(huì)繼續(xù)往下執(zhí)行:

    如果_EntryList的首元素非空,就取出來(lái)調(diào)用ExitEpilog方法,該方法會(huì)喚醒ObjectWaiter對(duì)象的線程,然后立即返回;
    如果_EntryList的首元素為空,就取_cxq的首元素,放入_EntryList,然后再?gòu)腳EntryList中取出來(lái)執(zhí)行ExitEpilog方法,然后立即返回;

    以上操作,均是執(zhí)行過(guò)ExitEpilog方法然后立即返回,如果取出的元素為空,就執(zhí)行循環(huán)繼續(xù)取;

    小結(jié)一下,線程B釋放了鎖之后,執(zhí)行的操作如下:
    1. 偏向鎖邏輯,此處未命中;
    2. 根據(jù)QMode的不同,將ObjectWaiter從_cxq或者_(dá)EntryList中取出后喚醒;
    3. 喚醒的元素會(huì)繼續(xù)執(zhí)行掛起前的代碼,按照我們之前的分析,線程喚醒后,就會(huì)通過(guò)CAS去競(jìng)爭(zhēng)鎖,此時(shí)由于線程B已經(jīng)釋放了鎖,那么此時(shí)應(yīng)該能競(jìng)爭(zhēng)成功;

    到了現(xiàn)在已經(jīng)將之前的幾個(gè)問(wèn)題搞清了,匯總起來(lái)看看:
    1. 線程A在wait() 后被加入了_WaitSet隊(duì)列中;
    2. 線程C被線程B啟動(dòng)后競(jìng)爭(zhēng)鎖失敗,被加入到_cxq隊(duì)列的首位;
    3. 線程B在notify()時(shí),從_WaitSet中取出第一個(gè),根據(jù)Policy的不同,將這個(gè)線程放入_EntryList或者_(dá)cxq隊(duì)列中的起始或末尾位置;
    4. 根據(jù)QMode的不同,將ObjectWaiter從_cxq或者_(dá)EntryList中取出后喚醒;;

    所以,最初的問(wèn)題已經(jīng)清楚了,wait()的線程被喚醒后,會(huì)進(jìn)入一個(gè)隊(duì)列,然后JVM會(huì)根據(jù)Policy和QMode的不同對(duì)隊(duì)列中的ObjectWaiter做不同的處理,被選中的ObjectWaiter會(huì)被喚醒,去競(jìng)爭(zhēng)鎖;

    至此,源碼分析已結(jié)束,但是因?yàn)槲覀儾恢繮olicy和QMode參數(shù)到底是多少,所以還不能對(duì)之前的問(wèn)題有個(gè)明確的結(jié)果,這些還是留在下一章來(lái)解答吧,下一章里我們?nèi)バ薷腏VM源碼,把參數(shù)都打印出來(lái);

    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css"></div>

    總結(jié)

    以上是生活随笔為你收集整理的Java的wait()、notify()学习三部曲之一:JVM源码分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    国产成人一区二 | 色婷婷骚婷婷 | 国产黄色片一级三级 | 亚洲国产97在线精品一区 | 久久国产午夜精品理论片最新版本 | 日本精品久久久久 | 成人久久久电影 | 911香蕉视频| av天天在线观看 | 五月婷婷丁香色 | 亚洲一区日韩在线 | 不卡国产视频 | 亚洲成a人片77777潘金莲 | 91九色综合 | 在线观看国产高清视频 | 中日韩欧美精彩视频 | 日韩久久视频 | 精油按摩av| 91天堂素人约啪 | 91成人免费看 | 麻豆视频观看 | 久久久国产精品人人片99精片欧美一 | 日韩三级视频在线观看 | 亚洲精品麻豆视频 | 亚洲视频在线看 | 五月婷婷色丁香 | 天天操夜夜逼 | 久久激情精品 | 亚洲精品乱码久久久久久 | 亚洲午夜久久久久久久久 | 精品美女国产在线 | 久久久wwww| 又粗又长又大又爽又黄少妇毛片 | 久久国产视频网站 | 日韩av午夜在线观看 | 黄色成人毛片 | 亚洲国产精品激情在线观看 | 国产一级黄色电影 | 久热免费 | 久久1区| 久久一级电影 | 在线国产精品视频 | 日日久视频| 热久久免费国产视频 | 奇米影视在线99精品 | 九九久久在线看 | 日韩精品中文字幕久久臀 | 91网免费看 | 亚洲精品国产麻豆 | 日韩av片无码一区二区不卡电影 | 久草资源在线观看 | 亚洲一区精品二人人爽久久 | 成人91免费视频 | 精品国产一区二区三区四区在线观看 | www一起操 | 91桃色在线免费观看 | 激情五月婷婷丁香 | 免费观看成人 | 中文字幕在线观看一区二区 | 日批网站在线观看 | 欧美极品久久 | 欧美日韩不卡一区二区三区 | 成年人在线免费看 | 天天天操天天天干 | 最近字幕在线观看第一季 | 免费黄色网止 | 最新国产在线观看 | 日日干美女 | 夜夜天天干 | 国产又粗又猛又黄又爽的视频 | 激情五月伊人 | 久久免费av电影 | 欧美日本不卡高清 | av电影中文字幕 | 色婷婷视频网 | 91精品天码美女少妇 | 69精品人人人人 | 在线观看mv的中文字幕网站 | 丁香花在线视频观看免费 | 国产欧美日韩精品一区二区免费 | 97超级碰碰碰碰久久久久 | 午夜精品一区二区三区在线观看 | 天天操狠狠操夜夜操 | 国产不卡毛片 | 97精品国产97久久久久久粉红 | 成人av免费在线看 | 99久久精品国产亚洲 | 亚洲视频网站在线观看 | 国产精品一区二区果冻传媒 | 中文字幕成人在线观看 | 免费99精品国产自在在线 | 美女网站在线免费观看 | 久久精品中文字幕少妇 | 日韩最新中文字幕 | 麻豆91网站 | 五月天最新网址 | 亚洲永久精品一区 | 黄色网址a| 亚洲成年人免费网站 | 亚洲综合色丁香婷婷六月图片 | 九九在线高清精品视频 | 婷婷久久亚洲 | 狠狠操狠狠干天天操 | 999成人| 国产黄免费在线观看 | 一级黄色大片 | 97精品超碰一区二区三区 | 在线小视频你懂得 | 亚洲免费不卡 | 青草草在线 | 国产一级二级在线 | 婷婷日 | 欧美成a人片在线观看久 | 97超碰人人网 | 日韩视频在线观看免费 | 五月婷婷色丁香 | 国产99久久久久久免费看 | 久久久久久久久电影 | 月下香电影 | 国语精品久久 | 欧美成人h版 | 五月婷婷播播 | 在线观看中文字幕网站 | 99精品国产一区二区三区不卡 | 久久涩视频 | 国际av在线 | 美女视频是黄的免费观看 | 成人在线一区二区三区 | 一区二区不卡在线观看 | 91在线免费观看网站 | 亚洲欧美激情精品一区二区 | 久久综合色播五月 | 婷婷丁香在线观看 | 亚洲jizzjizz日本少妇 | 欧美日韩国产mv | 欧美视频99 | 国产一在线精品一区在线观看 | 日韩美女黄色片 | 欧美激情视频一区二区三区免费 | 麻豆视频成人 | 特级毛片在线 | 色婷婷激情电影 | 免费在线观看不卡av | 91福利视频久久久久 | 久草久| 久久成人国产精品免费软件 | 亚洲精品乱码久久久久久蜜桃欧美 | 成人免费大片黄在线播放 | 婷婷在线免费视频 | 九九久久国产 | 亚洲日本激情 | 免费99精品国产自在在线 | 91网页版免费观看 | 精品成人久久 | 国产色啪 | 视频在线一区二区三区 | 婷婷久久综合九色综合 | 在线看成人 | 99久久日韩精品视频免费在线观看 | 日韩手机在线 | 91九色免费视频 | 久久这里精品视频 | 美女福利视频一区二区 | 国产超碰97 | 亚洲精品国产精品国 | 在线免费av网站 | 亚洲精品国产欧美在线观看 | 日韩久久精品一区二区三区 | 国产免费美女 | 日本不卡久久 | 日韩av黄| 亚洲欧美日韩国产一区二区三区 | 久久91网| 亚洲成人影音 | 中文字幕999 | 国产做aⅴ在线视频播放 | 亚洲在线观看av | 成人一级 | 国产操在线| 激情五月婷婷激情 | 二区三区在线视频 | 天天草天天干天天 | 久久电影国产免费久久电影 | 99精品欧美一区二区 | 国产精品com | 精品特级毛片 | 日韩欧美在线视频一区二区 | 久久人人爽 | 亚洲精品乱码久久久久久高潮 | 中文成人字幕 | 99久久久成人国产精品 | 国产精品va视频 | 五月天综合婷婷 | av看片在线| 在线天堂8√ | 日韩亚洲国产精品 | 91中文字幕在线播放 | 久久久久国产精品免费 | 色婷婷99| 99久久这里有精品 | 最新日本中文字幕 | 在线成人性视频 | 欧美日韩不卡在线视频 | 久久精视频 | 伊人久久影视 | 91爱看片| 狠狠躁日日躁 | 国产99爱 | 色综合人人 | 美女视频是黄的免费观看 | 国产成人三级在线播放 | 97免费视频在线播放 | 精品国产精品久久 | 精品视频专区 | 日本中文在线观看 | 正在播放 久久 | 婷婷亚洲激情 | 中文字幕亚洲综合久久五月天色无吗'' | 最近日韩免费视频 | 欧美日韩免费在线观看视频 | 精品国产视频在线观看 | 精品在线一区二区三区 | av免费观看网站 | 精品久久久久久亚洲综合网站 | 亚洲免费高清视频 | 六月丁香激情网 | 在线免费观看的av | 毛片久久久 | 日韩欧美在线播放 | 国产手机av | 日韩视频免费观看高清完整版在线 | 色婷婷久久久综合中文字幕 | 在线视频日韩精品 | 久久久国产一区 | 国产精品久久久久av | 国产精品视频免费在线观看 | 中文字幕在线观看国产 | 国产人成免费视频 | japanese黑人亚洲人4k | 国产成人精品av在线观 | www色com| 日韩二区在线 | 日韩毛片在线一区二区毛片 | 五月婷亚洲 | 草草草影院 | av五月婷婷 | 91毛片视频 | 黄色网在线免费观看 | 国产一区二区三区四区在线 | 五月婷婷激情六月 | 激情视频在线观看网址 | 久久一线 | av在线免费在线 | 免费精品人在线二线三线 | 国产麻豆视频免费观看 | 中文字幕日韩一区二区三区不卡 | 日本中文一区二区 | 国产一区二区久久精品 | 日韩和的一区二在线 | 草草草影院| 91人人人 | 久久精品亚洲综合专区 | 日韩精品一区二区三区不卡 | 97av精品| 国产高清久久久 | 国产视频亚洲 | 亚洲伊人成综合网 | 亚洲婷婷综合色高清在线 | 国产护士av| 日日日爽爽爽 | 久草在线观 | 国产极品尤物在线 | 97人人添人澡人人爽超碰动图 | 97超碰中文字幕 | 91在线91 | 在线日韩三级 | 国产精品久久在线观看 | 欧美日韩一区二区免费在线观看 | 视频国产区 | 欧美一区二区三区在线 | 日韩一区二区在线免费观看 | 欧美久草网 | 日本中文一级片 | 日韩91av | 极品国产91在线网站 | 狠狠色丁香婷婷综合最新地址 | 久久99久久99精品免视看婷婷 | 在线免费视频 你懂得 | 青青河边草免费 | 麻豆免费视频观看 | 中文字幕在线观看视频一区 | 国产96精品 | 亚洲国产成人在线播放 | 国产123区在线观看 国产精品麻豆91 | 国产精品综合久久久久久 | 国产精品激情偷乱一区二区∴ | 久久国产精品网站 | 98精品国产自产在线观看 | 视频一区二区在线观看 | 日本精品久久久一区二区三区 | 成人精品一区二区三区中文字幕 | 日韩美女高潮 | 99精品欧美一区二区三区黑人哦 | 91网免费看 | 九九精品视频在线看 | 亚洲精品视频免费在线观看 | av日韩国产| 国产丝袜美腿在线 | 91黄在线看| 在线中文视频 | 国产精品99久久久久久久久久久久 | www.国产视频 | 欧美在线观看视频一区二区三区 | 午夜视频在线观看欧美 | 黄av资源| 九九视频免费在线观看 | 欧美最猛性xxxxx免费 | 欧美一级高清片 | 国产日韩欧美在线播放 | 亚洲精品资源在线 | 久久免费观看少妇a级毛片 久久久久成人免费 | 91av原创 | 免费久久99精品国产 | 久久久久久欧美二区电影网 | 久久精品国产亚洲aⅴ | 亚洲干视频在线观看 | 免费特级黄色片 | 日韩免| 国产精品99免视看9 国产精品毛片一区视频 | 日韩视频三区 | 九九热1 | 久草热视频 | 天天干天天插伊人网 | 欧美日在线观看 | 日韩在线观看视频在线 | 免费观看一级成人毛片 | 久青草国产在线 | 粉嫩高清一区二区三区 | 国产在线视频不卡 | 国产精品三级视频 | 激情视频二区 | 久99热| 久久精品国产99 | 日韩精品最新在线观看 | 五月婷激情 | 欧美91精品久久久久国产性生爱 | 91在线精品播放 | 日日日日日 | 日韩在线播放av | 中文字幕色在线 | 国产中文字幕视频在线 | 91久久久久久国产精品 | 香蕉国产91| 日日操天天操狠狠操 | 一区二区三区免费在线 | 特级毛片在线观看 | 国产精品美女免费看 | 久久综合九色综合久久久精品综合 | 韩国三级在线一区 | 国产精品12 | 国产一级片免费视频 | 欧美孕妇视频 | 91香蕉国产 | 久久精品国产免费观看 | 91亚洲狠狠婷婷综合久久久 | 中文字幕色播 | 亚洲黄色激情小说 | 2021国产精品视频 | 国产成人久久精品一区二区三区 | 国产精品一区二区av日韩在线 | 在线免费黄 | 亚洲美女视频网 | 九九交易行官网 | 啪啪免费视频网站 | 国产亚洲精品久久久网站好莱 | 国色天香在线 | 天天干天天做天天操 | 精品视频久久 | 久久精品国产99国产 | av大片免费在线观看 | www.久久久精品 | 国产成人精品久久亚洲高清不卡 | 天天操天天操一操 | 婷婷综合亚洲 | 久久国产精品成人免费浪潮 | 成年人免费在线看 | 日本性xxx| 不卡视频国产 | 国产精品一区专区欧美日韩 | 亚洲经典中文字幕 | 男女免费av | 国产欧美在线一区 | 丁香午夜婷婷 | 日韩久久视频 | 黄色特级毛片 | 日日日爽爽爽 | 激情深爱 | 美女精品网站 | 久久9999久久免费精品国产 | 精品一区欧美 | 狠狠婷婷 | 黄a在线看| 91视频在线网址 | 九九视频热| 最新中文字幕在线资源 | 国产成人精品久久二区二区 | 日本中文字幕在线免费观看 | 成人午夜电影在线播放 | 国产精品黄色 | 久久九九国产精品 | 精品一区在线看 | 免费亚洲精品视频 | 91最新视频在线观看 | 国产尤物视频在线 | 日韩在线播放av | 888av| 日本精品一区二区三区在线播放视频 | 99久久久国产精品免费观看 | 色婷婷中文 | 精品一区 精品二区 | 五月天视频网站 | 亚洲资源| 四虎在线免费视频 | 色一色在线| 中文字幕乱偷在线 | 欧美亚洲久久 | 欧美少妇18p | 91完整视频| 在线播放国产一区二区三区 | 国内精品久久影院 | 亚洲精品国产精品国自产在线 | 久久久久成人免费 | 中文字幕视频一区 | 久久人网 | 日韩首页 | 国产理论免费 | 狠狠地操 | 96久久欧美麻豆网站 | 国产精品一区二区在线免费观看 | 夜夜嗨av色一区二区不卡 | 99热在线观看免费 | 欧美日韩性生活 | 久久视频网址 | 精品网站999www | 色.com| 在线视频1卡二卡三卡 | 亚洲精品视频免费在线观看 | 麻豆视频国产精品 | 最近中文字幕免费大全 | 天天操天天摸天天爽 | 天天操 夜夜操 | 97精品国产91久久久久久 | 搡bbbb搡bbb视频 | 香蕉网在线播放 | 亚洲国产精品成人女人久久 | www激情网| 国产主播大尺度精品福利免费 | 操操操影院 | 亚洲丝袜中文 | 中文在线免费看视频 | 国产精品麻豆91 | 中文字幕精品一区二区精品 | 国产三级午夜理伦三级 | 亚洲色图22p | 国产一区二区网址 | 国产最新视频在线观看 | 久久精品美女视频网站 | 亚州人成在线播放 | 黄色在线观看网站 | 国产手机视频在线 | 色综合夜色一区 | 天天摸日日摸人人看 | 国产黄色理论片 | 精品国产一区二区三区在线 | 国产精品成人在线 | 97视频中文字幕 | 亚洲精品午夜aaa久久久 | 精品视频在线免费观看 | 天天做日日爱夜夜爽 | 国产福利在线不卡 | 亚洲精品资源 | 四虎国产精品永久在线国在线 | 久久永久视频 | 黄色av电影在线观看 | 天天操天天综合网 | www.啪啪.com| 在线视频一二三 | 欧美三人交 | 91 中文字幕| 亚洲二区精品 | 啪啪免费试看 | 久久久久久久久久久久久久av | 国产亚洲视频中文字幕视频 | 日韩中出在线 | 播五月综合 | 天天爽天天碰狠狠添 | 日本精品一区二区三区在线观看 | 午夜色大片在线观看 | 婷婷色综合色 | 中文av不卡 | 在线直播av | 日本久久视频 | 欧美激情综合五月色丁香 | 久久久影院一区二区三区 | 一区二区三区四区五区六区 | 精品国产中文字幕 | 日韩一区二区在线免费观看 | 黄色av网站在线观看 | 中文字幕亚洲欧美日韩 | 欧美日韩中文国产一区发布 | 国产综合在线视频 | 日韩毛片在线免费观看 | 久久国产精品99久久久久久丝袜 | 久久精品一区二区三 | 亚洲综合激情五月 | 国产精品18久久久久久首页狼 | 国产高清免费在线观看 | 狠狠狠色丁香婷婷综合久久88 | 狠狠躁夜夜躁人人爽视频 | 日韩三级.com | 成年人视频在线免费观看 | 亚洲精品在线观看不卡 | 国产 精品 资源 | 91成人精品国产刺激国语对白 | 黄色大片中国 | 在线观看国产日韩 | 黄色大片视频网站 | 亚洲午夜av电影 | 九九热国产视频 | 在线成人一区 | 色偷偷中文字幕 | 成人黄色在线电影 | 国产精品av免费在线观看 | 黄色小网站在线观看 | 欧美精品一区二区性色 | 中文字幕电影一区 | 成人国产精品av | 色噜噜日韩精品欧美一区二区 | 国产精品久久久久久久99 | 亚洲,播放| 久久精品欧美一区 | 日韩a级黄色 | 久久免费成人精品视频 | 最近日本mv字幕免费观看 | 国产黄视频在线观看 | 国语久久 | 亚洲国产中文在线观看 | 午夜av在线播放 | 不卡电影一区二区三区 | 久久免费国产电影 | 婷婷激情站 | 午夜av大片| 九九热精品视频在线播放 | 在线观看av网站 | 成年人精品 | 国产专区视频在线 | 日韩视频一区二区三区在线播放免费观看 | 亚洲成色777777在线观看影院 | 色婷婷婷 | www蜜桃视频 | 国产伦精品一区二区三区… | a视频在线 | 开心激情网五月天 | 中文字幕欧美日韩va免费视频 | 91在线精品秘密一区二区 | 国产成人333kkk | 亚洲精品系列 | 精品一区二区在线观看 | 丁香婷婷综合色啪 | 在线观看中文字幕一区 | 婷婷视频在线 | 在线播放第一页 | 国产色婷婷 | 操操操日日日干干干 | 免费a一级 | 亚洲区另类春色综合小说校园片 | 国产亚洲精品综合一区91 | 亚洲精品网站 | 天天爽夜夜爽人人爽曰av | 激情五月综合网 | 在线影院 国内精品 | 国产91在线观 | 午夜精品一区二区三区在线视频 | 亚洲国产免费看 | 91视频这里只有精品 | 国产最新精品视频 | 国产国语在线 | www.神马久久 | 国产亚洲欧美一区 | 久久免费国产电影 | 五月天婷婷丁香花 | 久久免费视频网站 | 欧美精品乱码久久久久 | 国产精品va最新国产精品视频 | 国产福利一区二区在线 | 久久综合电影 | 精品视频在线播放 | 五月婷婷综合激情 | 精品一区二区在线免费观看 | 九九视频这里只有精品 | 日本中文乱码卡一卡二新区 | av电影免费 | 免费不卡中文字幕视频 | 色永久免费视频 | 免费看的黄色片 | 国产精品美女久久久久久 | 91久久久久久国产精品 | 日韩国产精品毛片 | 久久免费看a级毛毛片 | 久久久资源网 | 激情电影影院 | 四虎永久精品在线 | 97在线观看免费观看高清 | 亚洲精品www久久久 www国产精品com | 一级黄色片在线免费看 | 视频一区在线免费观看 | 激情av资源 | 成人全视频免费观看在线看 | 免费亚洲视频 | 国产理论在线 | 国产在线中文 | 精品免费久久 | 夜夜干夜夜 | 国产手机在线观看视频 | 天天插天天色 | 中文字幕欧美日韩va免费视频 | 国产在线无 | 日日夜精品 | 九九九九热精品免费视频点播观看 | 香蕉久草 | 国产91对白在线播 | 视频二区在线 | 免费视频成人 | aaawww | 中文字幕久久网 | 亚洲永久精品在线 | 99精品视频免费观看视频 | 久久免费精彩视频 | 九色精品免费永久在线 | 碰超人人 | 麻豆视频免费播放 | 五月婷婷激情网 | 国产成年免费视频 | 欧美日韩二区在线 | 亚洲黄色一级电影 | 成人a级黄色片 | 日韩欧美视频免费看 | 免费成人在线视频网站 | 99久久www免费 | 精品在线视频观看 | 欧美日韩一区二区视频在线观看 | 免费久久99精品国产婷婷六月 | 天天操天天干天天爱 | 亚洲欧美国产精品18p | 96在线| 91爱爱网址 | 国产精品激情偷乱一区二区∴ | 在线韩国电影免费观影完整版 | 在线观看黄 | 国产传媒一区在线 | av大全在线看 | 日韩久久在线 | 欧美日韩国产伦理 | 国产91区| 激情图片qvod | 国产成人精品不卡 | 五月婷婷久草 | 久久久久区 | 婷婷国产v亚洲v欧美久久 | 成人在线观看av | 99热在线这里只有精品 | 国产视频一二三 | 国产精品久久在线 | 久久这里只有精品视频99 | 日韩av电影手机在线观看 | 欧美 亚洲 另类 激情 另类 | 麻豆传媒视频观看 | 麻豆免费精品视频 | 精品产品国产在线不卡 | 黄色毛片视频免费观看中文 | 久久国产手机看片 | 精品国产伦一区二区三区免费 | 国产精品乱码一区二三区 | 深爱开心激情网 | 亚洲免费婷婷 | 黄色大片免费网站 | mm1313亚洲精品国产 | 精品亚洲男同gayvideo网站 | 日韩午夜电影网 | 天天色天天干天天色 | 激情欧美一区二区三区 | 国产精品高 | 三级黄色免费 | 深爱婷婷久久综合 | 久热超碰| 色香天天 | 91在线永久| 免费看十八岁美女 | 国产成人一区二区三区在线观看 | 91av美女| 中文字幕久久精品一区 | 黄色录像av | 欧美最猛性xxxxx免费 | 最新日韩中文字幕 | 久久久久久久18 | 日本久久久久久久久久 | 欧美91精品久久久久国产性生爱 | 亚洲一二三久久 | 精品福利视频在线 | 久久久久欧美精品999 | 欧美日韩高清一区二区 国产亚洲免费看 | 色哟哟国产精品 | 99久久精品国产欧美主题曲 | 亚洲精品视频中文字幕 | 国产免码va在线观看免费 | 日本高清中文字幕有码在线 | 精品在线观看一区二区 | 99久久日韩精品视频免费在线观看 | 日日夜夜精品视频天天综合网 | 国产在线不卡视频 | 日韩高清片 | 欧美精品久久久久久久久老牛影院 | 在线免费av观看 | 中文字幕日韩伦理 | 国产精品免费一区二区三区在线观看 | 午夜色站 | 亚洲免费视频在线观看 | 久久理论电影 | 日本九九视频 | 欧美做受高潮电影o | 丁香在线视频 | 人人操日日干 | 午夜色场| 天天插综合 | 国产亚洲精品久久久久动 | 日本在线成人 | 在线免费观看黄网站 | 伊人丁香 | 最近中文字幕在线中文高清版 | 天天弄天天操 | 99在线精品视频观看 | 黄色av网站在线观看 | 91亚洲网站 | 免费在线激情视频 | 成人福利在线 | 国产一级高清 | 免费在线国产精品 | 国产永久免费高清在线观看视频 | 色九色| 在线va视频 | 日韩欧美精品一区二区三区经典 | 国产视频久 | 久久久久久久久久网站 | 夜夜狠狠 | 久久精品国产精品亚洲 | 九九视频一区 | 久久人人爽av | 久久人91精品久久久久久不卡 | 久久国产精品色av免费看 | 正在播放国产一区 | 五月综合色 | 亚洲视频在线观看网站 | 亚洲精品午夜久久久久久久久久久 | 久久9999久久免费精品国产 | 久久免费视频3 | 国产一区二区视频在线 | 看黄色91 | 日韩欧美一区二区三区视频 | 久久精国产 | 免费黄色av. | 黄色的网站免费看 | 日韩精品久久中文字幕 | 欧美色图视频一区 | 欧美色噜噜噜 | 亚洲最大成人免费网站 | 激情五月视频 | 免费亚洲一区二区 | 日韩精品中文字幕在线播放 | 久久九九久久 | 亚洲欧洲精品一区二区精品久久久 | 国产黄色成人 | 日韩在线视频在线观看 | av一区二区三区在线播放 | 9在线观看免费高清完整 | 免费 在线 中文 日本 | 亚洲成人av在线电影 | 午夜视频二区 | 99精品国产一区二区三区不卡 | 日本黄色片一区二区 | 99视频| 成片视频在线观看 | 久久综合婷婷国产二区高清 | 亚洲在线视频观看 | 亚洲激情影院 | 久久午夜精品视频 | 国产精品毛片一区视频播不卡 | 国产亚洲精品美女 | 九九热在线精品视频 | 97操操| 国产午夜免费视频 | 美女黄网站视频免费 | av在线亚洲天堂 | 奇米网在线观看 | 米奇影视7777 | 高清在线一区二区 | av中文字幕不卡 | www.狠狠操 | 中文字幕123区 | 日韩精品在线看 | 久久精品成人欧美大片古装 | 欧美电影在线观看 | 日韩电影中文字幕 | 精品视频在线免费观看 | 久久男人视频 | 69精品视频 | 91爱爱电影 | 婷婷六月中文字幕 | 黄色日批网站 | 国内精品久久久久久久久久久久 | a级片韩国 | 久久久国产精品亚洲一区 | 最近中文字幕高清字幕免费mv | 999久久久久久 | 亚洲免费在线 | 久久婷婷综合激情 | 激情网五月婷婷 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产看片网站 | 色欧美成人精品a∨在线观看 | 91av亚洲| 久久99欧美 | 国产精品一区二区精品视频免费看 | 国产成人一区二区在线观看 | 干干操操 | 国产一级片在线播放 | 国产亚洲婷婷 | 五月天伊人网 | 天天射天天爱天天干 | 国产精品初高中精品久久 | av大全在线 | 岛国大片免费视频 | 色噜噜在线观看视频 | 国产精品麻豆三级一区视频 | 亚洲乱码久久 | 日本精品在线视频 | 又黄又爽又刺激视频 | 黄色国产高清 | 免费亚洲黄色 | 精品成人a区在线观看 | 欧美黄色高清 | 亚洲成年片 | 色婷五月天| 国产精品成人一区二区 | 亚洲视频www | 欧美性大战久久久久 | av黄在线播放 | 手机av在线网站 | 国产精品久久久久永久免费看 | www.狠狠插.com| 天天插日日射 | 婷婷久久久久 | 亚洲激情电影在线 | 91网页版在线观看 | 国产精品精 | 91热| 岛国片在线 | 天天天综合 | 国产精品一区二区三区电影 | 在线免费观看黄网站 | 免费电影一区二区三区 | 日韩mv欧美mv国产精品 | 在线观看精品黄av片免费 | bbbb操bbbb| 成人av资源网站 | 在线观看中文av | 超碰在线人 | 97电影院在线观看 | 欧美久久久久久久久久久 | 国产精品第一页在线 | wwwwww国产 | 最近中文字幕大全中文字幕免费 | 亚洲在线精品视频 | 国产资源精品 | 国产护士av | 国产91亚洲 | 99人久久精品视频最新地址 | 色狠狠婷婷 | 综合网中文字幕 | av免费黄色 | 亚洲成人影音 | 日韩在线视频网站 | 亚洲一区美女视频在线观看免费 | 亚洲欧美国产精品va在线观看 | 五月天com | 午夜精品久久久99热福利 | 国产美女主播精品一区二区三区 | 黄色大片av | 一级a性色生活片久久毛片波多野 | 中文字幕av网站 | 国产中文字幕久久 | 国产美女免费观看 | 欧美精品久久久久a | 亚洲精品黄色片 | 久久成人精品电影 | 免费a v在线 | 丝袜精品视频 | 一区二区三区在线影院 | 天天色综合1| 欧洲一区二区在线观看 | 国产精品久久久久久久久久久久 | 日韩欧美综合 | 色视频在线免费观看 | 在线91色 | 免费高清在线观看电视网站 | 日韩xxx视频 | 日韩免费在线视频观看 | 超碰在线网 | 日日爽| 97av视频 | 亚洲精品自拍 | 亚洲高清在线视频 | 日韩在线观看三区 | 人人涩 | 国产在线一区观看 | 免费色视频在线 | 在线日韩亚洲 | 国产精品久久伊人 | 国产久视频 | 在线天堂中文www视软件 | 国产一区二区精品 | 日韩在线不卡视频 | 色鬼综合网 | 久草视频在线免费 | 九九交易行官网 | 久久99深爱久久99精品 | 91在线观看黄 | 九九亚洲精品 | 日日夜夜狠狠 | 欧美福利在线播放 | 日本少妇高清做爰视频 | 日韩mv欧美mv国产精品 | 黄色影院在线观看 | 人人玩人人添人人澡超碰 | 亚洲精品资源 | 黄色国产精品 | 91在线播放视频 | 91视频在线观看下载 | 亚洲免费一级 | 久久免视频 | 狠狠色丁婷婷日日 | 久草视频免费播放 | 久热av在线 | 欧美日韩xxx | 极品国产91在线网站 | 久久精品国产久精国产 | 国产美女视频 | 中文字幕日本在线观看 | 麻豆极品 | 国产 日韩 中文字幕 | 免费看的黄色录像 | 97国产| 91免费网址 | 亚洲精品在线一区二区三区 | 国产一区二区中文字幕 | 在线观看免费av网 | 亚洲影院天堂 | 999久久久欧美日韩黑人 | 亚洲欧美综合 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 中文字幕电影一区 | 日韩大片在线看 | 国产精品观看视频 | av一区二区三区在线 | 成人h动漫精品一区二 | 国产成免费视频 | 999在线精品 | 97视频在线免费 | 亚洲午夜精品福利 | 日韩在线二区 | 在线国产福利 | 免费在线日韩 | 99色在线播放 | 国产精品青青 | 在线a亚洲视频播放在线观看 | 9免费视频 | 波多野结衣在线播放视频 | 成 人 黄 色 免费播放 | 一区二区理论片 | 99精品国产免费久久久久久下载 | 在线精品视频免费播放 | 国产精品18久久久久久久网站 | 亚洲国产成人久久 | 成片视频免费观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 日韩有码欧美 | 日韩av不卡在线 | 在线观看不卡视频 | 国产亚洲人 |