3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

深入分析线程池的实现原理

發(fā)布時(shí)間:2025/3/20 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入分析线程池的实现原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方?好好學(xué)java?,選擇?星標(biāo)?公眾號(hào)

重磅資訊、干貨,第一時(shí)間送達(dá) 今日推薦:SQL 語(yǔ)法速成手冊(cè)文末點(diǎn)擊閱讀原文,去B站看視頻,別忘記關(guān)注哦 個(gè)人原創(chuàng)100W+訪問(wèn)量博客:點(diǎn)擊前往,查看更多

來(lái)源:jianshu.com/p/704a6c5d337c



一、概述

線程池,顧名思義就是存放線程的池子,池子里存放了很多可以復(fù)用的線程。

如果不用類似線程池的容器,每當(dāng)我們需要執(zhí)行用戶任務(wù)的時(shí)候都去創(chuàng)建新的線程,任務(wù)執(zhí)行完之后線程就被回收了,這樣頻繁地創(chuàng)建和銷毀線程會(huì)浪費(fèi)大量的系統(tǒng)資源。

因此,線程池通過(guò)線程復(fù)用機(jī)制,并對(duì)線程進(jìn)行統(tǒng)一管理,具有以下優(yōu)點(diǎn):

  • 降低系統(tǒng)資源消耗。通過(guò)復(fù)用已存在的線程,降低線程創(chuàng)建和銷毀造成的消耗;

  • 提高響應(yīng)速度。當(dāng)有任務(wù)到達(dá)時(shí),無(wú)需等待新線程的創(chuàng)建便能立即執(zhí)行;

  • 提高線程的可管理性。線程是稀缺資源,如果無(wú)限制的創(chuàng)建,不僅會(huì)消耗大量系統(tǒng)資源,還會(huì)降低系統(tǒng)的穩(wěn)定性,使用線程池可以進(jìn)行對(duì)線程進(jìn)行統(tǒng)一的分配、調(diào)優(yōu)和監(jiān)控。

ThreadPoolExecutor是線程池框架的一個(gè)核心類,本文通過(guò)對(duì)ThreadPoolExecutor源碼的分析(基于JDK 1.8),來(lái)深入分析線程池的實(shí)現(xiàn)原理。

二、ThreadPoolExecutor類的屬性

先從ThreadPoolExecutor類中的字段開(kāi)始:

附上我歷時(shí)三個(gè)月總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,筆者這幾年及春招的總結(jié),github 1.4k star,拿去不謝!

下載方式

1.?首先掃描下方二維碼

2.?后臺(tái)回復(fù)「Java面試」即可獲取

// 線程池的控制狀態(tài),用高3位來(lái)表示線程池的運(yùn)行狀態(tài),低29位來(lái)表示線程池中工作線程的數(shù)量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));//值為29,用來(lái)表示偏移量private static final int COUNT_BITS = Integer.SIZE - 3;//線程池的最大容量,其值的二進(jìn)制為:00011111111111111111111111111111(29個(gè)1)private static final int CAPACITY = (1 << COUNT_BITS) - 1;// 線程池的運(yùn)行狀態(tài),總共有5個(gè)狀態(tài),用高3位來(lái)表示private static final int RUNNING = -1 << COUNT_BITS;private static final int SHUTDOWN = 0 << COUNT_BITS;private static final int STOP = 1 << COUNT_BITS;private static final int TIDYING = 2 << COUNT_BITS;private static final int TERMINATED = 3 << COUNT_BITS;//任務(wù)緩存隊(duì)列,用來(lái)存放等待執(zhí)行的任務(wù)private final BlockingQueue<Runnable> workQueue;//全局鎖,對(duì)線程池狀態(tài)等屬性修改時(shí)需要使用這個(gè)鎖private final ReentrantLock mainLock = new ReentrantLock();//線程池中工作線程的集合,訪問(wèn)和修改需要持有全局鎖private final HashSet<Worker> workers = new HashSet<Worker>();// 終止條件private final Condition termination = mainLock.newCondition();//線程池中曾經(jīng)出現(xiàn)過(guò)的最大線程數(shù)private int largestPoolSize;//已完成任務(wù)的數(shù)量private long completedTaskCount;//線程工廠private volatile ThreadFactory threadFactory;//任務(wù)拒絕策略private volatile RejectedExecutionHandler handler;//線程存活時(shí)間private volatile long keepAliveTime;//是否允許核心線程超時(shí)private volatile boolean allowCoreThreadTimeOut;//核心池大小,若allowCoreThreadTimeOut被設(shè)置,核心線程全部空閑超時(shí)被回收的情況下會(huì)為0private volatile int corePoolSize;//最大池大小,不得超過(guò)CAPACITYprivate volatile int maximumPoolSize;//默認(rèn)的任務(wù)拒絕策略private static final RejectedExecutionHandler defaultHandler =new AbortPolicy();private static final RuntimePermission shutdownPerm =new RuntimePermission("modifyThread");private final AccessControlContext acc;

在ThreadPoolExecutor類的這些屬性中,線程池狀態(tài)是控制線程池生命周期至關(guān)重要的屬性,這里就以線程池狀態(tài)為出發(fā)點(diǎn)進(jìn)行研究。

通過(guò)上面的源碼可知,線程池的運(yùn)行狀態(tài)總共有5種,其值和含義分別如下:

  • RUNNING: ?高3位為111,接受新任務(wù)并處理阻塞隊(duì)列中的任務(wù)

  • SHUTDOWN: 高3位為000,不接受新任務(wù)但會(huì)處理阻塞隊(duì)列中的任務(wù)

  • STOP:高3位為001,不會(huì)接受新任務(wù),也不會(huì)處理阻塞隊(duì)列中的任務(wù),并且中斷正在運(yùn)行的任務(wù)

  • TIDYING: ?高3位為010,所有任務(wù)都已終止,工作線程數(shù)量為0,線程池將轉(zhuǎn)化到TIDYING狀態(tài),即將要執(zhí)行terminated()鉤子方法

  • TERMINATED: 高3位為011,terminated()方法已經(jīng)執(zhí)行結(jié)束

然而,線程池中并沒(méi)有使用單獨(dú)的變量來(lái)表示線程池的運(yùn)行狀態(tài),而是使用一個(gè)AtomicInteger類型的變量ctl來(lái)表示線程池的控制狀態(tài),其將線程池運(yùn)行狀態(tài)與工作線程的數(shù)量打包在一個(gè)整型中,用高3位來(lái)表示線程池的運(yùn)行狀態(tài),低29位來(lái)表示線程池中工作線程的數(shù)量,對(duì)ctl的操作主要參考以下幾個(gè)函數(shù):

// 通過(guò)與的方式,獲取ctl的高3位,也就是線程池的運(yùn)行狀態(tài)private static int runStateOf(int c) { return c & ~CAPACITY; }//通過(guò)與的方式,獲取ctl的低29位,也就是線程池中工作線程的數(shù)量private static int workerCountOf(int c) { return c & CAPACITY; }//通過(guò)或的方式,將線程池狀態(tài)和線程池中工作線程的數(shù)量打包成ctlprivate static int ctlOf(int rs, int wc) { return rs | wc; }//SHUTDOWN狀態(tài)的值是0,比它大的均是線程池停止或清理狀態(tài),比它小的是運(yùn)行狀態(tài)private static boolean isRunning(int c) {return c < SHUTDOWN;}

接下來(lái),我們看一下線程池狀態(tài)的所有轉(zhuǎn)換情況,如下:

  • RUNNING -> SHUTDOWN:調(diào)用shutdown(),可能在finalize()中隱式調(diào)用

  • (RUNNING or SHUTDOWN) -> STOP:調(diào)用shutdownNow()

  • SHUTDOWN -> TIDYING:當(dāng)緩存隊(duì)列和線程池都為空時(shí)

  • STOP -> TIDYING:當(dāng)線程池為空時(shí)

  • TIDYING -> TERMINATED:當(dāng)terminated()方法執(zhí)行結(jié)束時(shí)

通常情況下,線程池有如下兩種狀態(tài)轉(zhuǎn)換流程:

  • RUNNING -> SHUTDOWN -> TIDYING -> TERMINATED

  • RUNNING -> STOP -> TIDYING -> TERMINATED


  • 三、ThreadPoolExecutor類的構(gòu)造方法

    通常情況下,我們使用線程池的方式就是new一個(gè)ThreadPoolExecutor對(duì)象來(lái)生成一個(gè)線程池。接下來(lái),先看ThreadPoolExecutor類的構(gòu)造函數(shù):

    //間接調(diào)用最后一個(gè)構(gòu)造函數(shù),采用默認(rèn)的任務(wù)拒絕策略AbortPolicy和默認(rèn)的線程工廠public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue);//間接調(diào)用最后一個(gè)構(gòu)造函數(shù),采用默認(rèn)的任務(wù)拒絕策略AbortPolicypublic ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory);//間接調(diào)用最后一個(gè)構(gòu)造函數(shù),采用默認(rèn)的默認(rèn)的線程工廠public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler);//前面三個(gè)分別調(diào)用了最后一個(gè),主要的構(gòu)造函數(shù)public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);

    接下來(lái),看下最后一個(gè)構(gòu)造函數(shù)的具體實(shí)現(xiàn):

    public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {//參數(shù)合法性校驗(yàn)if (corePoolSize < 0 ||maximumPoolSize <= 0 ||maximumPoolSize < corePoolSize ||keepAliveTime < 0)throw new IllegalArgumentException();//參數(shù)合法性校驗(yàn)if (workQueue == null || threadFactory == null || handler == null)throw new NullPointerException();this.acc = System.getSecurityManager() == null ?null :AccessController.getContext();//初始化對(duì)應(yīng)的屬性this.corePoolSize = corePoolSize;this.maximumPoolSize = maximumPoolSize;this.workQueue = workQueue;this.keepAliveTime = unit.toNanos(keepAliveTime);this.threadFactory = threadFactory;this.handler = handler;}

    下面解釋下一下構(gòu)造器中各個(gè)參數(shù)的含義:

    1. corePoolSize


    線程池中的核心線程數(shù)。當(dāng)提交一個(gè)任務(wù)時(shí),線程池創(chuàng)建一個(gè)新線程執(zhí)行任務(wù),直到當(dāng)前線程數(shù)等于corePoolSize;如果當(dāng)前線程數(shù)為corePoolSize,繼續(xù)提交的任務(wù)被保存到阻塞隊(duì)列中,等待被執(zhí)行。

    2. maximumPoolSize

    線程池中允許的最大線程數(shù)。如果當(dāng)前阻塞隊(duì)列滿了,且繼續(xù)提交任務(wù),則創(chuàng)建新的線程執(zhí)行任務(wù),前提是當(dāng)前線程數(shù)小于maximumPoolSize。

    3. keepAliveTime


    線程空閑時(shí)的存活時(shí)間。默認(rèn)情況下,只有當(dāng)線程池中的線程數(shù)大于corePoolSize時(shí),keepAliveTime才會(huì)起作用,如果一個(gè)線程空閑的時(shí)間達(dá)到keepAliveTime,則會(huì)終止,直到線程池中的線程數(shù)不超過(guò)corePoolSize。但是如果調(diào)用了allowCoreThreadTimeOut(boolean)方法,keepAliveTime參數(shù)也會(huì)起作用,直到線程池中的線程數(shù)為0。

    4. unit


    keepAliveTime參數(shù)的時(shí)間單位。

    5. workQueue


    任務(wù)緩存隊(duì)列,用來(lái)存放等待執(zhí)行的任務(wù)。如果當(dāng)前線程數(shù)為corePoolSize,繼續(xù)提交的任務(wù)就會(huì)被保存到任務(wù)緩存隊(duì)列中,等待被執(zhí)行。


    一般來(lái)說(shuō),這里的BlockingQueue有以下三種選擇:

    • SynchronousQueue:

      一個(gè)不存儲(chǔ)元素的阻塞隊(duì)列,每個(gè)插入操作必須等到另一個(gè)線程調(diào)用移除操作,否則插入操作一直處于阻塞狀態(tài)。

      因此,如果線程池中始終沒(méi)有空閑線程(任務(wù)提交的平均速度快于被處理的速度),可能出現(xiàn)無(wú)限制的線程增長(zhǎng)。

    • LinkedBlockingQueue:

      基于鏈表結(jié)構(gòu)的阻塞隊(duì)列,如果不設(shè)置初始化容量,其容量為Integer.MAX_VALUE,即為無(wú)界隊(duì)列。

      因此,如果線程池中線程數(shù)達(dá)到了corePoolSize,且始終沒(méi)有空閑線程(任務(wù)提交的平均速度快于被處理的速度),任務(wù)緩存隊(duì)列可能出現(xiàn)無(wú)限制的增長(zhǎng)。

    • ArrayBlockingQueue:基于數(shù)組結(jié)構(gòu)的有界阻塞隊(duì)列,按FIFO排序任務(wù)。

    6. threadFactory


    線程工廠,創(chuàng)建新線程時(shí)使用的線程工廠。

    7. handler


    任務(wù)拒絕策略,當(dāng)阻塞隊(duì)列滿了,且線程池中的線程數(shù)達(dá)到maximumPoolSize,如果繼續(xù)提交任務(wù),就會(huì)采取任務(wù)拒絕策略處理該任務(wù),線程池提供了4種任務(wù)拒絕策略:

    • AbortPolicy:丟棄任務(wù)并拋出RejectedExecutionException異常,默認(rèn)策略;

    • CallerRunsPolicy:由調(diào)用execute方法的線程執(zhí)行該任務(wù);

    • DiscardPolicy:丟棄任務(wù),但是不拋出異常;

    • DiscardOldestPolicy:丟棄阻塞隊(duì)列最前面的任務(wù),然后重新嘗試執(zhí)行任務(wù)(重復(fù)此過(guò)程)。

      當(dāng)然也可以根據(jù)應(yīng)用場(chǎng)景實(shí)現(xiàn)RejectedExecutionHandler接口,自定義飽和策略,如記錄日志或持久化存儲(chǔ)不能處理的任務(wù)。


    四、線程池的實(shí)現(xiàn)原理

    1. 提交任務(wù)

    線程池框架提供了兩種方式提交任務(wù),submit()和execute(),通過(guò)submit()方法提交的任務(wù)可以返回任務(wù)執(zhí)行的結(jié)果,通過(guò)execute()方法提交的任務(wù)不能獲取任務(wù)執(zhí)行的結(jié)果。

    submit()方法的實(shí)現(xiàn)有以下三種:

    public Future<?> submit(Runnable task);public <T> Future<T> submit(Runnable task, T result);public <T> Future<T> submit(Callable<T> task);

    下面以第一個(gè)方法為例簡(jiǎn)單看一下submit()方法的實(shí)現(xiàn):

    public Future<?> submit(Runnable task) {if (task == null) throw new NullPointerException();RunnableFuture<Void> ftask = newTaskFor(task, null);execute(ftask);return ftask;}

    submit()方法是在ThreadPoolExecutor的父類AbstractExecutorService類實(shí)現(xiàn)的,最終還是調(diào)用的ThreadPoolExecutor類的execute()方法,下面著重看一下execute()方法的實(shí)現(xiàn)。

    public void execute(Runnable command) {if (command == null)throw new NullPointerException();//獲取線程池控制狀態(tài)int c = ctl.get();// (1)//worker數(shù)量小于corePoolSizeif (workerCountOf(c) < corePoolSize) {//創(chuàng)建worker,addWorker方法boolean參數(shù)用來(lái)判斷是否創(chuàng)建核心線程if (addWorker(command, true))//成功則返回return;//失敗則再次獲取線程池控制狀態(tài)c = ctl.get();}//(2)//線程池處于RUNNING狀態(tài),將任務(wù)加入workQueue任務(wù)緩存隊(duì)列if (isRunning(c) && workQueue.offer(command)) {// 再次檢查,獲取線程池控制狀態(tài),防止在任務(wù)入隊(duì)的過(guò)程中線程池關(guān)閉了或者線程池中沒(méi)有線程了int recheck = ctl.get();//線程池不處于RUNNING狀態(tài),且將任務(wù)從workQueue移除成功if (! isRunning(recheck) && remove(command))//采取任務(wù)拒絕策略reject(command);//worker數(shù)量等于0else if (workerCountOf(recheck) == 0)//創(chuàng)建workeraddWorker(null, false);}//(3)else if (!addWorker(command, false)) //創(chuàng)建workerreject(command); //如果創(chuàng)建worker失敗,采取任務(wù)拒絕策略}

    execute()方法的執(zhí)行流程可以總結(jié)如下:

    • 若線程池工作線程數(shù)量小于corePoolSize,則創(chuàng)建新線程來(lái)執(zhí)行任務(wù)

    • 若工作線程數(shù)量大于或等于corePoolSize,則將任務(wù)加入BlockingQueue

    • 若無(wú)法將任務(wù)加入BlockingQueue(BlockingQueue已滿),且工作線程數(shù)量小于maximumPoolSize,則創(chuàng)建新的線程來(lái)執(zhí)行任務(wù)

    • 若工作線程數(shù)量達(dá)到maximumPoolSize,則創(chuàng)建線程失敗,采取任務(wù)拒絕策略

    可以結(jié)合下面的兩張圖來(lái)理解線程池提交任務(wù)的執(zhí)行流程。

    2. 創(chuàng)建線程

    從execute()方法的實(shí)現(xiàn)可以看出,addWorker()方法主要負(fù)責(zé)創(chuàng)建新的線程并執(zhí)行任務(wù),代碼實(shí)現(xiàn)如下:? ?

    //addWorker有兩個(gè)參數(shù):Runnable類型的firstTask,用于指定新增的線程執(zhí)行的第一個(gè)任務(wù);boolean類型的core,表示是否創(chuàng)建核心線程 //該方法的返回值代表是否成功新增一個(gè)線程private boolean addWorker(Runnable firstTask, boolean core) {retry:for (;;) {int c = ctl.get();int rs = runStateOf(c);// (1)if (rs >= SHUTDOWN &&! (rs == SHUTDOWN &&firstTask == null &&! workQueue.isEmpty()))return false;for (;;) {int wc = workerCountOf(c);//線程數(shù)超標(biāo),不能再創(chuàng)建線程,直接返回if (wc >= CAPACITY ||wc >= (core ? corePoolSize : maximumPoolSize))return false;//CAS操作遞增workCount//如果成功,那么創(chuàng)建線程前的所有條件校驗(yàn)都滿足了,準(zhǔn)備創(chuàng)建線程執(zhí)行任務(wù),退出retry循環(huán)//如果失敗,說(shuō)明有其他線程也在嘗試往線程池中創(chuàng)建線程(往線程池提交任務(wù)可以是并發(fā)的),則繼續(xù)往下執(zhí)行if (compareAndIncrementWorkerCount(c))break retry;//重新獲取線程池控制狀態(tài)c = ctl.get();// 如果線程池的狀態(tài)發(fā)生了變更,如有其他線程關(guān)閉了這個(gè)線程池,那么需要回到外層的for循環(huán)if (runStateOf(c) != rs)continue retry;//如果只是CAS操作失敗的話,進(jìn)入內(nèi)層的for循環(huán)就可以了}}//到這里,創(chuàng)建線程前的所有條件校驗(yàn)都滿足了,可以開(kāi)始創(chuàng)建線程來(lái)執(zhí)行任務(wù)//worker是否已經(jīng)啟動(dòng)boolean workerStarted = false;//是否已將這個(gè)worker添加到workers這個(gè)HashSet中boolean workerAdded = false;Worker w = null;try {//創(chuàng)建一個(gè)worker,從這里可以看出對(duì)線程的包裝w = new Worker(firstTask);//取出worker中的線程對(duì)象,Worker的構(gòu)造方法會(huì)調(diào)用ThreadFactory來(lái)創(chuàng)建一個(gè)新的線程final Thread t = w.thread;if (t != null) {//獲取全局鎖, 并發(fā)的訪問(wèn)線程池workers對(duì)象必須加鎖,持有鎖的期間線程池也不會(huì)被關(guān)閉final ReentrantLock mainLock = this.mainLock;mainLock.lock();try {//重新獲取線程池的運(yùn)行狀態(tài)int rs = runStateOf(ctl.get());//小于SHUTTDOWN即RUNNING//等于SHUTDOWN并且firstTask為null,不接受新的任務(wù),但是會(huì)繼續(xù)執(zhí)行等待隊(duì)列中的任務(wù)if (rs < SHUTDOWN ||(rs == SHUTDOWN && firstTask == null)) {//worker里面的thread不能是已啟動(dòng)的if (t.isAlive())throw new IllegalThreadStateException();//將新創(chuàng)建的線程加入到線程池中workers.add(w);int s = workers.size();// 更新largestPoolSizeif (s > largestPoolSize)largestPoolSize = s;workerAdded = true;}} finally {mainLock.unlock();}//線程添加線程池成功,則啟動(dòng)新創(chuàng)建的線程if (workerAdded) {t.start();workerStarted = true;}}} finally {//若線程啟動(dòng)失敗,做一些清理工作,例如從workers中移除新添加的worker并遞減wokerCountif (! workerStarted)addWorkerFailed(w);}//返回線程是否啟動(dòng)成功return workerStarted;}

    因?yàn)榇a(1)處的邏輯不利于理解,我們通過(guò)(1)的等價(jià)實(shí)現(xiàn)來(lái)理解:? ?

    if (rs>=SHUTDOWN && !(rs == SHUTDOWN && firstTask == null && ! workQueue.isEmpty())) //等價(jià)實(shí)現(xiàn) rs>=SHUTDOWN && (rs != SHUTDOWN || firstTask != null || workQueue.isEmpty())

    其含義為,滿足下列條件之一則直接返回false,線程創(chuàng)建失敗:

    • rs > SHUTDOWN,也就是STOP,TIDYING或TERMINATED,此時(shí)不再接受新的任務(wù),且中斷正在執(zhí)行的任務(wù)

    • rs = SHUTDOWN且firstTask != null,此時(shí)不再接受任務(wù),但是仍會(huì)處理任務(wù)緩存隊(duì)列中的任務(wù)

    • rs = SHUTDOWN,隊(duì)列為空

    多說(shuō)一句,若線程池處于 SHUTDOWN, firstTask 為 null,且 workQueue 非空,那么還得創(chuàng)建線程繼續(xù)處理任務(wù)緩存隊(duì)列中的任務(wù)。

    總結(jié)一下,addWorker()方法完成了如下幾件任務(wù):


    1. 原子性的增加workerCount


    2. 將用戶給定的任務(wù)封裝成為一個(gè)worker,并將此worker添加進(jìn)workers集合中


    3. 啟動(dòng)worker對(duì)應(yīng)的線程


    4. 若線程啟動(dòng)失敗,回滾worker的創(chuàng)建動(dòng)作,即從workers中移除新添加的worker,并原子性的減少workerCount

    3. 工作線程的實(shí)現(xiàn)

    從addWorker()方法的實(shí)現(xiàn)可以看出,工作線程的創(chuàng)建和啟動(dòng)都跟ThreadPoolExecutor中的內(nèi)部類Worker有關(guān)。下面我們分析Worker類來(lái)看一下工作線程的實(shí)現(xiàn)。

    Worker類繼承自AQS類,具有鎖的功能;實(shí)現(xiàn)了Runable接口,可以將自身作為一個(gè)任務(wù)在線程中執(zhí)行。

    private final class Workerextends AbstractQueuedSynchronizerimplements Runnable

    Worker的主要字段就下面三個(gè),代碼也比較簡(jiǎn)單。

    //用來(lái)封裝worker的線程,線程池中真正運(yùn)行的線程,通過(guò)線程工廠創(chuàng)建而來(lái)final Thread thread;//worker所對(duì)應(yīng)的第一個(gè)任務(wù),可能為空Runnable firstTask;//記錄當(dāng)前線程完成的任務(wù)數(shù)volatile long completedTasks;

    Worker的構(gòu)造函數(shù)如下。

    Worker(Runnable firstTask) {//設(shè)置AQS的state為-1,在執(zhí)行runWorker()方法之前阻止線程中斷setState(-1);//初始化第一個(gè)任務(wù)this.firstTask = firstTask;//利用指定的線程工廠創(chuàng)建一個(gè)線程,注意,參數(shù)是Worker實(shí)例本身this//也就是當(dāng)執(zhí)行start方法啟動(dòng)線程thread時(shí),真正執(zhí)行的是Worker類的run方法this.thread = getThreadFactory().newThread(this);}

    Worker類繼承了AQS類,重寫(xiě)了其相應(yīng)的方法,實(shí)現(xiàn)了一個(gè)自定義的同步器,實(shí)現(xiàn)了不可重入鎖。

    //是否持有獨(dú)占鎖protected boolean isHeldExclusively() {return getState() != 0;}//嘗試獲取鎖protected boolean tryAcquire(int unused) {if (compareAndSetState(0, 1)) {//設(shè)置獨(dú)占線程setExclusiveOwnerThread(Thread.currentThread());return true;}return false;}//嘗試釋放鎖protected boolean tryRelease(int unused) {//設(shè)置獨(dú)占線程為nullsetExclusiveOwnerThread(null);setState(0);return true;}//獲取鎖public void lock() { acquire(1); }//嘗試獲取鎖public boolean tryLock() { return tryAcquire(1); }//釋放鎖public void unlock() { release(1); }//是否持有鎖public boolean isLocked() { return isHeldExclusively(); }

    Worker類還提供了一個(gè)中斷線程thread的方法。

    void interruptIfStarted() {Thread t;//AQS狀態(tài)大于等于0,worker對(duì)應(yīng)的線程不為null,且該線程沒(méi)有被中斷if (getState() >= 0 && (t = thread) != null && !t.isInterrupted()) {try {t.interrupt();} catch (SecurityException ignore) {}}}

    再來(lái)看一下Worker類的run()方法的實(shí)現(xiàn),會(huì)發(fā)現(xiàn)run()方法最終調(diào)用了ThreadPoolExecutor類的runWorker()方法。

    public void run() {runWorker(this);}

    4. 線程復(fù)用機(jī)制

    通過(guò)上文可以知道,worker中的線程start 后,執(zhí)行的是worker的run()方法,而run()方法最終會(huì)調(diào)用ThreadPoolExecutor類的runWorker()方法,runWorker()方法實(shí)現(xiàn)了線程池中的線程復(fù)用機(jī)制。下面我們來(lái)看一下runWorker()方法的實(shí)現(xiàn)。

    final void runWorker(Worker w) {//獲取當(dāng)前線程Thread wt = Thread.currentThread();//獲取w的firstTaskRunnable task = w.firstTask;//設(shè)置w的firstTask為nullw.firstTask = null;// 釋放鎖,設(shè)置AQS的state為0,允許中斷w.unlock();//用于標(biāo)識(shí)線程是否異常終止,finally中processWorkerExit()方法會(huì)有不同邏輯boolean completedAbruptly = true;try {//循環(huán)調(diào)用getTask()獲取任務(wù),不斷從任務(wù)緩存隊(duì)列獲取任務(wù)并執(zhí)行while (task != null || (task = getTask()) != null) {//進(jìn)入循環(huán)內(nèi)部,代表已經(jīng)獲取到可執(zhí)行的任務(wù),則對(duì)worker對(duì)象加鎖,保證線程在執(zhí)行任務(wù)過(guò)程中不會(huì)被中斷w.lock();if ((runStateAtLeast(ctl.get(), STOP) || //若線程池狀態(tài)大于等于STOP,那么意味著該線程要中斷(Thread.interrupted() && //線程被中斷runStateAtLeast(ctl.get(), STOP))) && //且是因?yàn)榫€程池內(nèi)部狀態(tài)變化而被中斷!wt.isInterrupted()) //確保該線程未被中斷//發(fā)出中斷請(qǐng)求wt.interrupt();try {//開(kāi)始執(zhí)行任務(wù)前的Hook方法beforeExecute(wt, task);Throwable thrown = null;try {//到這里正式開(kāi)始執(zhí)行任務(wù)task.run();} catch (RuntimeException x) {thrown = x; throw x;} catch (Error x) {thrown = x; throw x;} catch (Throwable x) {thrown = x; throw new Error(x);} finally {//執(zhí)行任務(wù)后的Hook方法afterExecute(task, thrown);}} finally {//置空task,準(zhǔn)備通過(guò)getTask()獲取下一個(gè)任務(wù)task = null;//completedTasks遞增w.completedTasks++;//釋放掉worker持有的獨(dú)占鎖w.unlock();}}completedAbruptly = false;} finally {//到這里,線程執(zhí)行結(jié)束,需要執(zhí)行結(jié)束線程的一些清理工作//線程執(zhí)行結(jié)束可能有兩種情況://1.getTask()返回null,也就是說(shuō),這個(gè)worker的使命結(jié)束了,線程執(zhí)行結(jié)束//2.任務(wù)執(zhí)行過(guò)程中發(fā)生了異常//第一種情況,getTask()返回null,那么getTask()中會(huì)將workerCount遞減//第二種情況,workerCount沒(méi)有進(jìn)行處理,這個(gè)遞減操作會(huì)在processWorkerExit()中處理processWorkerExit(w, completedAbruptly);}}

    runWorker()方法是線程池的核心,實(shí)現(xiàn)了線程池中的線程復(fù)用機(jī)制,來(lái)看一下


    runWorker()方法都做了哪些工作:


    1. 運(yùn)行第一個(gè)任務(wù)firstTask之后,循環(huán)調(diào)用getTask()方法獲取任務(wù),不斷從任務(wù)緩存隊(duì)列獲取任務(wù)并執(zhí)行;


    2. 獲取到任務(wù)之后就對(duì)worker對(duì)象加鎖,保證線程在執(zhí)行任務(wù)的過(guò)程中不會(huì)被中斷,任務(wù)執(zhí)行完會(huì)釋放鎖;


    3. 在執(zhí)行任務(wù)的前后,可以根據(jù)業(yè)務(wù)場(chǎng)景重寫(xiě)beforeExecute()和afterExecute()等Hook方法;


    4. 執(zhí)行通過(guò)getTask()方法獲取到的任務(wù)


    5. 線程執(zhí)行結(jié)束后,調(diào)用processWorkerExit()方法執(zhí)行結(jié)束線程的一些清理工作

    從runWorker()方法的實(shí)現(xiàn)可以看出,runWorker()方法中主要調(diào)用了getTask()方法和processWorkerExit()方法,下面分別看一下這兩個(gè)方法的實(shí)現(xiàn)。

    getTask()的實(shí)現(xiàn)

    getTask()方法用來(lái)不斷地從任務(wù)緩存隊(duì)列獲取任務(wù)并交給線程執(zhí)行,下面分析一下其實(shí)現(xiàn)。?

    private Runnable getTask() {//標(biāo)識(shí)當(dāng)前線程是否超時(shí)未能獲取到task對(duì)象boolean timedOut = false;for (;;) {//獲取線程池的控制狀態(tài)int c = ctl.get();//獲取線程池的運(yùn)行狀態(tài)int rs = runStateOf(c);//如果線程池狀態(tài)大于等于STOP,或者處于SHUTDOWN狀態(tài),并且阻塞隊(duì)列為空,線程池工作線程數(shù)量遞減,方法返回null,回收線程if (rs >= SHUTDOWN && (rs >= STOP || workQueue.isEmpty())) {decrementWorkerCount();return null;}//獲取worker數(shù)量int wc = workerCountOf(c);//標(biāo)識(shí)當(dāng)前線程在空閑時(shí),是否應(yīng)該超時(shí)回收// 如果allowCoreThreadTimeOut為ture,或當(dāng)前線程數(shù)大于核心池大小,則需要超時(shí)回收boolean timed = allowCoreThreadTimeOut || wc > corePoolSize;//如果worker數(shù)量大于maximumPoolSize(有可能調(diào)用了 setMaximumPoolSize(),導(dǎo)致worker數(shù)量大于maximumPoolSize)if ((wc > maximumPoolSize || (timed && timedOut)) //或者獲取任務(wù)超時(shí)&& (wc > 1 || workQueue.isEmpty())) { //workerCount大于1或者阻塞隊(duì)列為空(在阻塞隊(duì)列不為空時(shí),需要保證至少有一個(gè)工作線程)if (compareAndDecrementWorkerCount(c))//線程池工作線程數(shù)量遞減,方法返回null,回收線程return null;//線程池工作線程數(shù)量遞減失敗,跳過(guò)剩余部分,繼續(xù)循環(huán)continue;}try {//如果允許超時(shí)回收,則調(diào)用阻塞隊(duì)列的poll(),只在keepAliveTime時(shí)間內(nèi)等待獲取任務(wù),一旦超過(guò)則返回null//否則調(diào)用take(),如果隊(duì)列為空,線程進(jìn)入阻塞狀態(tài),無(wú)限時(shí)等待任務(wù),直到隊(duì)列中有可取任務(wù)或者響應(yīng)中斷信號(hào)退出Runnable r = timed ?workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS) :workQueue.take();//若task不為null,則返回成功獲取的task對(duì)象if (r != null)return r;// 若返回task為null,表示線程空閑時(shí)間超時(shí),則設(shè)置timeOut為truetimedOut = true;} catch (InterruptedException retry) {//如果此worker發(fā)生了中斷,采取的方案是重試,沒(méi)有超時(shí)//在哪些情況下會(huì)發(fā)生中斷?調(diào)用setMaximumPoolSize(),shutDown(),shutDownNow()timedOut = false;}}}

    接下來(lái)總結(jié)一下getTask()方法會(huì)在哪些情況下返回:


    1. 線程池處于RUNNING狀態(tài),阻塞隊(duì)列不為空,返回成功獲取的task對(duì)象


    2. 線程池處于SHUTDOWN狀態(tài),阻塞隊(duì)列不為空,返回成功獲取的task對(duì)象


    3. 線程池狀態(tài)大于等于STOP,返回null,回收線程


    4. 線程池處于SHUTDOWN狀態(tài),并且阻塞隊(duì)列為空,返回null,回收線程


    5. worker數(shù)量大于maximumPoolSize,返回null,回收線程


    6. 線程空閑時(shí)間超時(shí),返回null,回收線程

    processWorkerExit()的實(shí)現(xiàn)

    processWorkerExit()方法負(fù)責(zé)執(zhí)行結(jié)束線程的一些清理工作,下面分析一下其實(shí)現(xiàn)。

    private void processWorkerExit(Worker w, boolean completedAbruptly) {//如果用戶任務(wù)執(zhí)行過(guò)程中發(fā)生了異常,則需要遞減workerCountif (completedAbruptly)decrementWorkerCount();final ReentrantLock mainLock = this.mainLock;//獲取全局鎖mainLock.lock();try {//將worker完成任務(wù)的數(shù)量累加到總的完成任務(wù)數(shù)中completedTaskCount += w.completedTasks;//從workers集合中移除該workerworkers.remove(w);} finally {//釋放鎖mainLock.unlock();}//嘗試終止線程池tryTerminate();//獲取線程池控制狀態(tài)int c = ctl.get();if (runStateLessThan(c, STOP)) { //線程池運(yùn)行狀態(tài)小于STOPif (!completedAbruptly) { //如果用戶任務(wù)執(zhí)行過(guò)程中發(fā)生了異常,則直接調(diào)用addWorker()方法創(chuàng)建線程//是否允許核心線程超時(shí)int min = allowCoreThreadTimeOut ? 0 : corePoolSize;//允許核心超時(shí)并且workQueue阻塞隊(duì)列不為空,那線程池中至少有一個(gè)工作線程if (min == 0 && ! workQueue.isEmpty())min = 1;//如果工作線程數(shù)量workerCount大于等于核心池大小corePoolSize,//或者允許核心超時(shí)并且workQueue阻塞隊(duì)列不為空時(shí),線程池中至少有一個(gè)工作線程,直接返回if (workerCountOf(c) >= min)return;//若不滿足上述條件,則調(diào)用addWorker()方法創(chuàng)建線程}//創(chuàng)建新的線程取代當(dāng)前線程addWorker(null, false);}}

    processWorkerExit()方法中主要調(diào)用了tryTerminate()方法,下面看一下tryTerminate()方法的實(shí)現(xiàn)。

    final void tryTerminate() {for (;;) {//獲取線程池控制狀態(tài)int c = ctl.get();if (isRunning(c) || //線程池的運(yùn)行狀態(tài)為RUNNINGrunStateAtLeast(c, TIDYING) || //線程池的運(yùn)行狀態(tài)大于等于TIDYING(runStateOf(c) == SHUTDOWN && ! workQueue.isEmpty())) //線程池的運(yùn)行狀態(tài)為SHUTDOWN且阻塞隊(duì)列不為空//不能終止,直接返回return;//只有當(dāng)線程池的運(yùn)行狀態(tài)為STOP,或線程池運(yùn)行狀態(tài)為SHUTDOWN且阻塞隊(duì)列為空時(shí),可以執(zhí)行到這里//如果線程池工作線程的數(shù)量不為0if (workerCountOf(c) != 0) {//僅僅中斷一個(gè)空閑的workerinterruptIdleWorkers(ONLY_ONE);return;}//只有當(dāng)線程池工作線程的數(shù)量為0時(shí)可以執(zhí)行到這里final ReentrantLock mainLock = this.mainLock;//獲取全局鎖mainLock.lock();try {if (ctl.compareAndSet(c, ctlOf(TIDYING, 0))) { //CAS操作設(shè)置線程池運(yùn)行狀態(tài)為T(mén)IDYING,工作線程數(shù)量為0try {//執(zhí)行terminated()鉤子方法terminated();} finally {//設(shè)置線程池運(yùn)行狀態(tài)為T(mén)ERMINATED,工作線程數(shù)量為0ctl.set(ctlOf(TERMINATED, 0));//喚醒在termination條件上等待的所有線程termination.signalAll();}return;}} finally {//釋放鎖mainLock.unlock();}//若CAS操作失敗則重試}}

    tryTerminate()方法的作用是嘗試終止線程池,它會(huì)在所有可能終止線程池的地方被調(diào)用,滿足終止線程池的條件有兩個(gè):首先,線程池狀態(tài)為STOP,或者為SHUTDOWN且任務(wù)緩存隊(duì)列為空;其次,工作線程數(shù)量為0。

    滿足了上述兩個(gè)條件之后,tryTerminate()方法獲取全局鎖,設(shè)置線程池運(yùn)行狀態(tài)為T(mén)IDYING,之后執(zhí)行terminated()鉤子方法,最后設(shè)置線程池狀態(tài)為T(mén)ERMINATED。

    至此,線程池運(yùn)行狀態(tài)變?yōu)門(mén)ERMINATED,工作線程數(shù)量為0,workers已清空,且workQueue也已清空,所有線程都執(zhí)行結(jié)束,線程池的生命周期到此結(jié)束。

    5. 關(guān)閉線程池

    關(guān)閉線程池有兩個(gè)方法,shutdown()和shutdownNow(),下面分別看一下這兩個(gè)方法的實(shí)現(xiàn)。

    shutdown()的實(shí)現(xiàn)

    shutdown()方法將線程池運(yùn)行狀態(tài)設(shè)置為SHUTDOWN,此時(shí)線程池不會(huì)接受新的任務(wù),但會(huì)處理阻塞隊(duì)列中的任務(wù)。

    public void shutdown() {final ReentrantLock mainLock = this.mainLock;//獲取全局鎖mainLock.lock();try {//檢查shutdown權(quán)限checkShutdownAccess();//設(shè)置線程池運(yùn)行狀態(tài)為SHUTDOWNadvanceRunState(SHUTDOWN);//中斷所有空閑workerinterruptIdleWorkers();//用onShutdown()鉤子方法onShutdown();} finally {//釋放鎖mainLock.unlock();}//嘗試終止線程池tryTerminate();}

    shutdown()方法首先會(huì)檢查是否具有shutdown的權(quán)限,然后設(shè)置線程池的運(yùn)行狀態(tài)為SHUTDOWN,之后中斷所有空閑的worker,再調(diào)用onShutdown()鉤子方法,最后嘗試終止線程池。

    shutdown()方法調(diào)用了interruptIdleWorkers()方法中斷所有空閑的worker,其實(shí)現(xiàn)如下。

    private void interruptIdleWorkers() {interruptIdleWorkers(false);}//onlyOne標(biāo)識(shí)是否只中斷一個(gè)線程private void interruptIdleWorkers(boolean onlyOne) {final ReentrantLock mainLock = this.mainLock;//獲取全局鎖mainLock.lock();try {//遍歷workers集合for (Worker w : workers) {//worker對(duì)應(yīng)的線程Thread t = w.thread;//線程未被中斷且成功獲得鎖if (!t.isInterrupted() && w.tryLock()) {try {//發(fā)出中斷請(qǐng)求t.interrupt();} catch (SecurityException ignore) {} finally {//釋放鎖w.unlock();}}//若只中斷一個(gè)線程,則跳出循環(huán)if (onlyOne)break;}} finally {//釋放鎖mainLock.unlock();}}

    shutdownNow()的實(shí)現(xiàn)

    shutdownNow()方法將線程池運(yùn)行狀態(tài)設(shè)置為STOP,此時(shí)線程池不會(huì)接受新任務(wù),也不會(huì)處理阻塞隊(duì)列中的任務(wù),并且中斷正在運(yùn)行的任務(wù)。

    public List<Runnable> shutdownNow() {List<Runnable> tasks;final ReentrantLock mainLock = this.mainLock;//獲取全局鎖mainLock.lock();try {//檢查shutdown權(quán)限checkShutdownAccess();//設(shè)置線程池運(yùn)行狀態(tài)為STOPadvanceRunState(STOP);//中斷所有workerinterruptWorkers();//將任務(wù)緩存隊(duì)列中等待執(zhí)行的任務(wù)取出并放到list中tasks = drainQueue();} finally {//釋放鎖mainLock.unlock();}//嘗試終止線程池tryTerminate();//返回任務(wù)緩存隊(duì)列中等待執(zhí)行的任務(wù)列表return tasks;}

    shutdownNow()方法與shutdown()方法相似,不同之處在于,前者設(shè)置線程池的運(yùn)行狀態(tài)為STOP,之后中斷所有的worker(并非只是空閑的worker),嘗試終止線程池之后,返回任務(wù)緩存隊(duì)列中等待執(zhí)行的任務(wù)列表。

    shutdownNow()方法調(diào)用了interruptWorkers()方法中斷所有的worker(并非只是空閑的worker),其實(shí)現(xiàn)如下。

    private void interruptWorkers() {final ReentrantLock mainLock = this.mainLock;//獲取全局鎖mainLock.lock();try {//遍歷workers集合for (Worker w : workers)//調(diào)用Worker類的interruptIfStarted()方法中斷線程w.interruptIfStarted();} finally {//釋放鎖mainLock.unlock();}}


    五、總結(jié)

    至此,我們已經(jīng)閱讀了線程池框架的核心類ThreadPoolExecutor類的大部分源碼,由衷地贊嘆這個(gè)類很多地方設(shè)計(jì)的巧妙之處:

    • 將線程池的運(yùn)行狀態(tài)和工作線程數(shù)量打包在一起,并使用了大量的位運(yùn)算

    • 使用CAS操作更新線程控制狀態(tài)ctl,確保對(duì)ctl的更新是原子操作

    • 內(nèi)部類Worker類繼承了AQS,實(shí)現(xiàn)了一個(gè)自定義的同步器,實(shí)現(xiàn)了不可重入鎖

    • 使用while循環(huán)自旋地從任務(wù)緩存隊(duì)列中獲取任務(wù)并執(zhí)行,實(shí)現(xiàn)了線程復(fù)用機(jī)制

    • 調(diào)用interrupt()方法中斷線程,但注意該方法并不能直接中斷線程的運(yùn)行,只是發(fā)出了中斷信號(hào),配合BlockingQueue的take(),poll()方法的使用,打斷線程的阻塞狀態(tài)

    其實(shí),線程池的本質(zhì)就是生產(chǎn)者消費(fèi)者模式,線程池的調(diào)用者不斷向線程池提交任務(wù),線程池里面的工作線程不斷獲取這些任務(wù)并執(zhí)行(從任務(wù)緩存隊(duì)列獲取任務(wù)或者直接執(zhí)行任務(wù))。

    讀完本文,相信大家對(duì)線程池的實(shí)現(xiàn)原理有了深刻的認(rèn)識(shí),比如向線程池提交一個(gè)任務(wù)之后線程池的執(zhí)行流程,一個(gè)任務(wù)從被提交到被執(zhí)行會(huì)經(jīng)歷哪些過(guò)程,一個(gè)工作線程從被創(chuàng)建到正常執(zhí)行到執(zhí)行結(jié)束的執(zhí)行過(guò)程,等等。

    最后,再附上我歷時(shí)三個(gè)月總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,筆者這幾年及春招的總結(jié),github 1.4k star,拿去不謝!

    下載方式

    1.?首先掃描下方二維碼

    2.?后臺(tái)回復(fù)「Java面試」即可獲取

    總結(jié)

    以上是生活随笔為你收集整理的深入分析线程池的实现原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

    欧美精品无码一区二区三区 | 久久久久亚洲精品男人的天堂 | 亚洲精品美女久久久久久久 | 国产69精品久久久久app下载 | 精品国产精品久久一区免费式 | 久久精品人妻少妇一区二区三区 | 最新国产麻豆aⅴ精品无码 | 国产av一区二区精品久久凹凸 | 国产成人综合色在线观看网站 | 福利一区二区三区视频在线观看 | 国产真人无遮挡作爱免费视频 | 色情久久久av熟女人妻网站 | 免费人成在线视频无码 | 欧美freesex黑人又粗又大 | 一本加勒比波多野结衣 | 亚洲国产精华液网站w | 国产精品视频免费播放 | 久久精品国产99精品亚洲 | 欧美性猛交内射兽交老熟妇 | 性色欲网站人妻丰满中文久久不卡 | 久久www免费人成人片 | 国产精品无码成人午夜电影 | 久久久久99精品国产片 | 成 人 网 站国产免费观看 | 色 综合 欧美 亚洲 国产 | √天堂资源地址中文在线 | 国产真实伦对白全集 | 国产欧美亚洲精品a | 欧美大屁股xxxxhd黑色 | 在线播放免费人成毛片乱码 | 亚洲日韩av一区二区三区中文 | 精品国精品国产自在久国产87 | 国产成人无码av在线影院 | 午夜精品久久久内射近拍高清 | 欧美激情内射喷水高潮 | 欧美国产日韩亚洲中文 | 在线成人www免费观看视频 | 亚洲日韩中文字幕在线播放 | 国产av一区二区精品久久凹凸 | 色狠狠av一区二区三区 | 亚洲国产精品一区二区美利坚 | 少妇人妻av毛片在线看 | 色欲久久久天天天综合网精品 | 欧洲精品码一区二区三区免费看 | 蜜臀av在线播放 久久综合激激的五月天 | 国内精品九九久久久精品 | 精品国精品国产自在久国产87 | 正在播放老肥熟妇露脸 | 欧洲美熟女乱又伦 | 色婷婷综合中文久久一本 | 日韩精品a片一区二区三区妖精 | 成人精品视频一区二区 | 一个人看的www免费视频在线观看 | 成人免费无码大片a毛片 | 亚洲色偷偷男人的天堂 | 精品无码成人片一区二区98 | 狠狠色噜噜狠狠狠7777奇米 | 中文字幕无码免费久久9一区9 | 亚洲精品一区二区三区四区五区 | 麻豆成人精品国产免费 | 99riav国产精品视频 | 亚洲中文字幕av在天堂 | 欧美成人免费全部网站 | 日本护士xxxxhd少妇 | 97色伦图片97综合影院 | 婷婷五月综合激情中文字幕 | 好爽又高潮了毛片免费下载 | 中文无码伦av中文字幕 | 亚洲精品久久久久中文第一幕 | 亚洲va中文字幕无码久久不卡 | 亚洲欧美精品aaaaaa片 | 婷婷色婷婷开心五月四房播播 | 免费观看的无遮挡av | 久久亚洲中文字幕精品一区 | 性生交大片免费看女人按摩摩 | 亚洲精品欧美二区三区中文字幕 | 久久久久国色av免费观看性色 | 国内揄拍国内精品少妇国语 | 中文字幕+乱码+中文字幕一区 | 丰满人妻被黑人猛烈进入 | 亚洲综合在线一区二区三区 | 少妇久久久久久人妻无码 | 成人精品视频一区二区三区尤物 | 在线а√天堂中文官网 | 日本精品久久久久中文字幕 | 国产无遮挡吃胸膜奶免费看 | 国产两女互慰高潮视频在线观看 | 自拍偷自拍亚洲精品10p | 欧美真人作爱免费视频 | 一本久道高清无码视频 | 狂野欧美性猛交免费视频 | 精品 日韩 国产 欧美 视频 | 亚洲 欧美 激情 小说 另类 | 黑森林福利视频导航 | av人摸人人人澡人人超碰下载 | 377p欧洲日本亚洲大胆 | 欧美日韩久久久精品a片 | 色欲av亚洲一区无码少妇 | 精品国产国产综合精品 | 欧美阿v高清资源不卡在线播放 | 久久国语露脸国产精品电影 | 国产黄在线观看免费观看不卡 | 中文字幕无码日韩专区 | 亚洲欧美日韩成人高清在线一区 | 日韩av激情在线观看 | 亚洲成色www久久网站 | 狠狠亚洲超碰狼人久久 | 天天躁日日躁狠狠躁免费麻豆 | 午夜免费福利小电影 | 国产9 9在线 | 中文 | 国产明星裸体无码xxxx视频 | 久久久久av无码免费网 | 国产三级精品三级男人的天堂 | 东京一本一道一二三区 | 97人妻精品一区二区三区 | 成人av无码一区二区三区 | 久久97精品久久久久久久不卡 | 日韩无码专区 | 无码免费一区二区三区 | 在线精品国产一区二区三区 | 日本熟妇大屁股人妻 | 亚洲精品成人av在线 | 成年美女黄网站色大免费全看 | 一本色道婷婷久久欧美 | 国产成人无码午夜视频在线观看 | 国产精品igao视频网 | 亚洲国产午夜精品理论片 | 国产乡下妇女做爰 | 动漫av一区二区在线观看 | 午夜男女很黄的视频 | 精品国产一区二区三区四区在线看 | 2020久久超碰国产精品最新 | 久久zyz资源站无码中文动漫 | 国产美女精品一区二区三区 | 欧美精品国产综合久久 | 综合激情五月综合激情五月激情1 | 六十路熟妇乱子伦 | 亚洲va中文字幕无码久久不卡 | 国产成人一区二区三区在线观看 | 精品水蜜桃久久久久久久 | 人人妻人人澡人人爽人人精品 | 麻豆国产人妻欲求不满谁演的 | 欧洲熟妇色 欧美 | 亚洲自偷精品视频自拍 | 乱人伦中文视频在线观看 | 丰满肥臀大屁股熟妇激情视频 | 鲁大师影院在线观看 | 精品乱码久久久久久久 | 超碰97人人做人人爱少妇 | 俄罗斯老熟妇色xxxx | 亚洲国精产品一二二线 | 国产成人综合在线女婷五月99播放 | 亚洲日韩av一区二区三区四区 | 熟妇激情内射com | 亚洲 日韩 欧美 成人 在线观看 | 小sao货水好多真紧h无码视频 | 午夜男女很黄的视频 | 国产精品久久久一区二区三区 | 国产一区二区不卡老阿姨 | 国产乱人偷精品人妻a片 | 色窝窝无码一区二区三区色欲 | 娇妻被黑人粗大高潮白浆 | 牲欲强的熟妇农村老妇女视频 | 无码午夜成人1000部免费视频 | 成人试看120秒体验区 | 国产免费观看黄av片 | 亚洲 日韩 欧美 成人 在线观看 | 国产电影无码午夜在线播放 | 中文无码精品a∨在线观看不卡 | 亚洲综合伊人久久大杳蕉 | 97资源共享在线视频 | 亚洲色大成网站www国产 | 亚洲天堂2017无码中文 | 国产偷抇久久精品a片69 | 丁香啪啪综合成人亚洲 | 国产乡下妇女做爰 | 野狼第一精品社区 | 沈阳熟女露脸对白视频 | 激情内射亚州一区二区三区爱妻 | 中文字幕乱码人妻二区三区 | 99久久99久久免费精品蜜桃 | 377p欧洲日本亚洲大胆 | 亚洲精品欧美二区三区中文字幕 | 久久精品99久久香蕉国产色戒 | 国产人妻人伦精品1国产丝袜 | 成年美女黄网站色大免费视频 | 国产成人亚洲综合无码 | 国产精品对白交换视频 | 伊人久久大香线蕉亚洲 | 亚洲 a v无 码免 费 成 人 a v | 亚洲精品一区国产 | √天堂中文官网8在线 | 欧美日韩综合一区二区三区 | 丰满少妇弄高潮了www | 亚洲精品无码人妻无码 | 国产成人久久精品流白浆 | 真人与拘做受免费视频一 | 超碰97人人射妻 | 国内揄拍国内精品少妇国语 | 国产九九九九九九九a片 | 久9re热视频这里只有精品 | 日韩亚洲欧美中文高清在线 | 一本久道久久综合狠狠爱 | 六月丁香婷婷色狠狠久久 | 精品国产成人一区二区三区 | 双乳奶水饱满少妇呻吟 | 久久综合九色综合欧美狠狠 | 亚洲综合无码久久精品综合 | 亚洲s码欧洲m码国产av | 99久久久无码国产精品免费 | 日日噜噜噜噜夜夜爽亚洲精品 | 成人片黄网站色大片免费观看 | 国产在线无码精品电影网 | 兔费看少妇性l交大片免费 | 国产97人人超碰caoprom | √8天堂资源地址中文在线 | 黑人玩弄人妻中文在线 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 丰满人妻翻云覆雨呻吟视频 | 国产精品爱久久久久久久 | 成人无码视频在线观看网站 | 自拍偷自拍亚洲精品被多人伦好爽 | 日韩人妻系列无码专区 | 亚洲一区二区三区无码久久 | 亚洲国产一区二区三区在线观看 | 日韩人妻无码一区二区三区久久99 | 国产高清不卡无码视频 | 色欲久久久天天天综合网精品 | 波多野结衣av一区二区全免费观看 | 欧美 丝袜 自拍 制服 另类 | 久久精品人人做人人综合 | 国产亚洲精品久久久久久大师 | 大屁股大乳丰满人妻 | 日本饥渴人妻欲求不满 | 无码午夜成人1000部免费视频 | 国产激情综合五月久久 | 大乳丰满人妻中文字幕日本 | 天天摸天天碰天天添 | 任你躁国产自任一区二区三区 | 人妻无码久久精品人妻 | 国产成人精品久久亚洲高清不卡 | 色婷婷久久一区二区三区麻豆 | 亚洲精品一区二区三区在线 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产乱码精品一品二品 | 成人女人看片免费视频放人 | 日本爽爽爽爽爽爽在线观看免 | 亚洲欧洲日本综合aⅴ在线 | 亚洲综合在线一区二区三区 | 人人澡人人透人人爽 | 中文字幕精品av一区二区五区 | 激情内射日本一区二区三区 | 美女扒开屁股让男人桶 | 丰满少妇弄高潮了www | 亚洲人成人无码网www国产 | 国产欧美熟妇另类久久久 | 爆乳一区二区三区无码 | 无码精品国产va在线观看dvd | 99er热精品视频 | 丰满人妻一区二区三区免费视频 | 99久久久无码国产精品免费 | 亚洲人亚洲人成电影网站色 | 欧美熟妇另类久久久久久不卡 | 无遮无挡爽爽免费视频 | 色综合久久网 | 国产成人无码a区在线观看视频app | 两性色午夜视频免费播放 | 蜜臀av无码人妻精品 | 永久黄网站色视频免费直播 | 中文字幕无码日韩欧毛 | 大色综合色综合网站 | 国产无遮挡吃胸膜奶免费看 | 国产麻豆精品一区二区三区v视界 | 性色欲网站人妻丰满中文久久不卡 | 亚洲热妇无码av在线播放 | 中文字幕亚洲情99在线 | 亚洲综合无码久久精品综合 | 中文字幕人成乱码熟女app | 国产国语老龄妇女a片 | 亚洲爆乳精品无码一区二区三区 | 三级4级全黄60分钟 | 亚洲第一无码av无码专区 | 国产人妻精品一区二区三区 | 国产一区二区三区影院 | 欧美 亚洲 国产 另类 | 亚洲日韩av一区二区三区四区 | 国产免费久久精品国产传媒 | 亚洲成av人片在线观看无码不卡 | 鲁鲁鲁爽爽爽在线视频观看 | 国产超级va在线观看视频 | 国产亚洲欧美日韩亚洲中文色 | 奇米影视7777久久精品人人爽 | 久久久精品国产sm最大网站 | 午夜精品久久久内射近拍高清 | 国产成人亚洲综合无码 | 人妻夜夜爽天天爽三区 | 动漫av网站免费观看 | 少妇性l交大片欧洲热妇乱xxx | 国产欧美亚洲精品a | 日本xxxx色视频在线观看免费 | 无码免费一区二区三区 | 成熟女人特级毛片www免费 | 无码精品国产va在线观看dvd | 国产黑色丝袜在线播放 | 中文字幕精品av一区二区五区 | 久久久久久久久888 | 一本大道久久东京热无码av | www国产亚洲精品久久久日本 | 老子影院午夜伦不卡 | 中文字幕无码乱人伦 | 欧美丰满少妇xxxx性 | 国产精品-区区久久久狼 | 久久久www成人免费毛片 | 黄网在线观看免费网站 | 国产偷抇久久精品a片69 | 亚洲国产av精品一区二区蜜芽 | 成人精品一区二区三区中文字幕 | 内射巨臀欧美在线视频 | 精品人妻av区 | 国内少妇偷人精品视频 | 香蕉久久久久久av成人 | 久久人人97超碰a片精品 | 精品乱子伦一区二区三区 | 动漫av一区二区在线观看 | 欧美老熟妇乱xxxxx | 国产成人无码av片在线观看不卡 | 亚洲欧洲日本综合aⅴ在线 | 天干天干啦夜天干天2017 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 好爽又高潮了毛片免费下载 | 国产偷抇久久精品a片69 | 精品人妻人人做人人爽 | 人人澡人人透人人爽 | 99麻豆久久久国产精品免费 | 无码纯肉视频在线观看 | 亚洲综合精品香蕉久久网 | 亚洲精品国产品国语在线观看 | 精品aⅴ一区二区三区 | 亚洲热妇无码av在线播放 | 天天av天天av天天透 | yw尤物av无码国产在线观看 | 青青青手机频在线观看 | 日韩精品成人一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 欧美日本精品一区二区三区 | 欧美成人免费全部网站 | 日韩精品成人一区二区三区 | 国产高清不卡无码视频 | 国产麻豆精品精东影业av网站 | 国精产品一区二区三区 | 欧美性猛交内射兽交老熟妇 | 亚洲啪av永久无码精品放毛片 | 人人妻人人澡人人爽精品欧美 | 日韩av激情在线观看 | 欧美三级不卡在线观看 | 国产亚洲欧美日韩亚洲中文色 | 撕开奶罩揉吮奶头视频 | 天海翼激烈高潮到腰振不止 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲精品一区二区三区婷婷月 | 色婷婷久久一区二区三区麻豆 | 久久人人爽人人人人片 | 亚洲男人av香蕉爽爽爽爽 | 无码精品国产va在线观看dvd | 久久无码专区国产精品s | 欧美丰满少妇xxxx性 | 精品人人妻人人澡人人爽人人 | 国产亚洲人成a在线v网站 | 黑人粗大猛烈进出高潮视频 | 日产国产精品亚洲系列 | 日韩欧美成人免费观看 | 亚洲国产精品无码久久久久高潮 | 又大又紧又粉嫩18p少妇 | 狂野欧美激情性xxxx | 国产乱人伦av在线无码 | 丰满少妇弄高潮了www | 亚洲综合伊人久久大杳蕉 | 骚片av蜜桃精品一区 | 日产国产精品亚洲系列 | 波多野结衣一区二区三区av免费 | 日本熟妇人妻xxxxx人hd | 亚洲成a人片在线观看日本 | 国产精品久久久久久无码 | 超碰97人人射妻 | 亚洲日韩一区二区 | 国产精品多人p群无码 | 少妇厨房愉情理9仑片视频 | 日韩 欧美 动漫 国产 制服 | 午夜精品一区二区三区的区别 | a在线观看免费网站大全 | 中文字幕 人妻熟女 | 男女猛烈xx00免费视频试看 | 欧美熟妇另类久久久久久不卡 | 久久精品成人欧美大片 | 久久综合狠狠综合久久综合88 | 国产激情精品一区二区三区 | 亚洲成av人综合在线观看 | 精品人妻人人做人人爽夜夜爽 | 亚洲自偷自拍另类第1页 | 性做久久久久久久免费看 | 亚洲人成影院在线观看 | 久久97精品久久久久久久不卡 | 久久精品国产亚洲精品 | 性做久久久久久久免费看 | 巨爆乳无码视频在线观看 | 狠狠色欧美亚洲狠狠色www | 日韩欧美中文字幕公布 | 无码国产色欲xxxxx视频 | 久久国产精品精品国产色婷婷 | 国产精品久久精品三级 | 日韩在线不卡免费视频一区 | 亚洲熟妇色xxxxx欧美老妇y | 欧美性黑人极品hd | 亚洲人成影院在线观看 | 任你躁在线精品免费 | 国产成人无码区免费内射一片色欲 | 人人妻人人澡人人爽欧美一区 | 少妇人妻偷人精品无码视频 | 国产精品久久久久久无码 | 亚洲成a人片在线观看无码3d | 亚洲一区二区三区偷拍女厕 | 亚洲成a人一区二区三区 | 少妇激情av一区二区 | 国产亚洲精品精品国产亚洲综合 | 中文精品无码中文字幕无码专区 | 青春草在线视频免费观看 | 国产精品久久国产精品99 | 男女性色大片免费网站 | 精品无码一区二区三区的天堂 | 亚洲欧洲无卡二区视頻 | 国内精品一区二区三区不卡 | 国产午夜手机精彩视频 | 熟妇人妻无码xxx视频 | 丝袜人妻一区二区三区 | 人妻aⅴ无码一区二区三区 | 亚洲日韩av一区二区三区中文 | 国产午夜精品一区二区三区嫩草 | 天堂久久天堂av色综合 | 精品人妻人人做人人爽 | 亚洲 欧美 激情 小说 另类 | 色欲久久久天天天综合网精品 | 久久www免费人成人片 | 成 人 免费观看网站 | 国产精品久久久一区二区三区 | √天堂中文官网8在线 | 中文字幕无码免费久久99 | 国产精品内射视频免费 | 欧美 日韩 人妻 高清 中文 | 亚洲国产精品一区二区美利坚 | 在线观看国产午夜福利片 | 久久精品国产99久久6动漫 | 国产乱子伦视频在线播放 | 骚片av蜜桃精品一区 | 蜜桃av抽搐高潮一区二区 | 成人毛片一区二区 | 国产精品二区一区二区aⅴ污介绍 | 亚洲欧美综合区丁香五月小说 | 中文字幕人成乱码熟女app | 美女张开腿让人桶 | 正在播放东北夫妻内射 | 久久无码专区国产精品s | 精品国产一区二区三区av 性色 | 久久99精品久久久久婷婷 | 无码乱肉视频免费大全合集 | 亚洲中文字幕在线观看 | 内射巨臀欧美在线视频 | 亚洲乱码中文字幕在线 | 国产成人无码专区 | 欧美人妻一区二区三区 | 国产99久久精品一区二区 | 国产亚洲欧美日韩亚洲中文色 | 男女下面进入的视频免费午夜 | 特黄特色大片免费播放器图片 | 无码成人精品区在线观看 | 亚洲の无码国产の无码步美 | 中文字幕久久久久人妻 | 成人试看120秒体验区 | 国产成人精品久久亚洲高清不卡 | 久久99精品久久久久久 | 欧美喷潮久久久xxxxx | 又色又爽又黄的美女裸体网站 | 亚洲综合无码一区二区三区 | 亚洲熟妇色xxxxx亚洲 | 人人妻人人澡人人爽精品欧美 | 欧美丰满熟妇xxxx性ppx人交 | 又大又硬又爽免费视频 | 四十如虎的丰满熟妇啪啪 | 国产精品高潮呻吟av久久 | 人妻无码αv中文字幕久久琪琪布 | 国产凸凹视频一区二区 | 免费无码肉片在线观看 | 国产在线一区二区三区四区五区 | 99久久人妻精品免费一区 | 麻豆人妻少妇精品无码专区 | av在线亚洲欧洲日产一区二区 | 无人区乱码一区二区三区 | 97精品人妻一区二区三区香蕉 | 国产精品亚洲专区无码不卡 | 国产农村乱对白刺激视频 | 日韩 欧美 动漫 国产 制服 | 狂野欧美性猛交免费视频 | 丝袜人妻一区二区三区 | 国产色精品久久人妻 | 国产suv精品一区二区五 | 成人精品天堂一区二区三区 | 日本精品少妇一区二区三区 | 亚洲一区二区三区国产精华液 | 1000部夫妻午夜免费 | 国产午夜视频在线观看 | 亲嘴扒胸摸屁股激烈网站 | 欧美成人免费全部网站 | 一本色道久久综合亚洲精品不卡 | 秋霞特色aa大片 | 99久久精品无码一区二区毛片 | 丰满人妻翻云覆雨呻吟视频 | 小泽玛莉亚一区二区视频在线 | 日本爽爽爽爽爽爽在线观看免 | 国产精品美女久久久 | 伦伦影院午夜理论片 | 成人欧美一区二区三区黑人免费 | 久精品国产欧美亚洲色aⅴ大片 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 天天躁夜夜躁狠狠是什么心态 | 久久久av男人的天堂 | www国产亚洲精品久久网站 | 亚洲欧美日韩国产精品一区二区 | 日韩av激情在线观看 | 性欧美牲交xxxxx视频 | 秋霞特色aa大片 | 精品亚洲成av人在线观看 | 亚洲色无码一区二区三区 | 精品无人区无码乱码毛片国产 | 麻豆国产丝袜白领秘书在线观看 | 丁香啪啪综合成人亚洲 | 久久www免费人成人片 | 国产高清av在线播放 | a片免费视频在线观看 | 亚洲中文字幕在线无码一区二区 | 欧美日韩一区二区三区自拍 | 国产一区二区三区日韩精品 | 98国产精品综合一区二区三区 | 欧美freesex黑人又粗又大 | 又色又爽又黄的美女裸体网站 | 国产艳妇av在线观看果冻传媒 | 国产偷国产偷精品高清尤物 | 我要看www免费看插插视频 | 97无码免费人妻超级碰碰夜夜 | 久久久久免费精品国产 | 老熟妇乱子伦牲交视频 | 亚洲人成无码网www | 久久综合狠狠综合久久综合88 | 亚洲成a人一区二区三区 | 国产熟妇另类久久久久 | 97色伦图片97综合影院 | 亚洲七七久久桃花影院 | 好男人www社区 | 4hu四虎永久在线观看 | 无码乱肉视频免费大全合集 | 少妇人妻av毛片在线看 | 国产麻豆精品精东影业av网站 | 国产无套粉嫩白浆在线 | 精品人妻人人做人人爽 | 国产成人av免费观看 | 久久国产精品偷任你爽任你 | 无码精品国产va在线观看dvd | 国产精品久久国产精品99 | 精品人妻中文字幕有码在线 | 国产精品永久免费视频 | 午夜丰满少妇性开放视频 | 给我免费的视频在线观看 | 在线成人www免费观看视频 | 国产精品igao视频网 | 2020最新国产自产精品 | 欧美人妻一区二区三区 | 日本熟妇大屁股人妻 | 激情人妻另类人妻伦 | 99麻豆久久久国产精品免费 | 欧洲熟妇精品视频 | 久久久久se色偷偷亚洲精品av | 精品一区二区不卡无码av | 男人扒开女人内裤强吻桶进去 | 国产麻豆精品精东影业av网站 | 精品国产青草久久久久福利 | 丰满诱人的人妻3 | 国产精品多人p群无码 | 亚洲精品国产精品乱码不卡 | 激情五月综合色婷婷一区二区 | а√资源新版在线天堂 | 亚洲中文字幕乱码av波多ji | 人人妻人人澡人人爽精品欧美 | 亚洲成熟女人毛毛耸耸多 | 国产精品.xx视频.xxtv | 波多野结衣aⅴ在线 | 国产精品自产拍在线观看 | 欧美熟妇另类久久久久久不卡 | √8天堂资源地址中文在线 | 最近中文2019字幕第二页 | 国产精品理论片在线观看 | 九九热爱视频精品 | 成人欧美一区二区三区黑人免费 | 97人妻精品一区二区三区 | 国产在线精品一区二区高清不卡 | 日日天干夜夜狠狠爱 | 荫蒂被男人添的好舒服爽免费视频 | 久久久久久久久888 | 国产午夜精品一区二区三区嫩草 | 四虎国产精品一区二区 | 欧洲极品少妇 | 国产成人无码一二三区视频 | 纯爱无遮挡h肉动漫在线播放 | 99久久人妻精品免费一区 | 国产内射爽爽大片视频社区在线 | 久久综合给久久狠狠97色 | 蜜臀av无码人妻精品 | 人妻互换免费中文字幕 | 午夜免费福利小电影 | 女人被爽到呻吟gif动态图视看 | 日本精品人妻无码免费大全 | 东京热男人av天堂 | 一本精品99久久精品77 | 高清不卡一区二区三区 | 国产手机在线αⅴ片无码观看 | 欧美老妇交乱视频在线观看 | 亚洲精品一区二区三区大桥未久 | 999久久久国产精品消防器材 | 色一情一乱一伦 | 无码乱肉视频免费大全合集 | 午夜福利试看120秒体验区 | 欧美freesex黑人又粗又大 | 岛国片人妻三上悠亚 | 国产亚洲精品久久久久久久 | 国产精品亚洲一区二区三区喷水 | 99久久久无码国产精品免费 | 色婷婷欧美在线播放内射 | 亚洲 日韩 欧美 成人 在线观看 | 丝袜人妻一区二区三区 | 激情人妻另类人妻伦 | 成人精品视频一区二区三区尤物 | 亚洲无人区一区二区三区 | 最新版天堂资源中文官网 | 老太婆性杂交欧美肥老太 | 丰满人妻翻云覆雨呻吟视频 | 婷婷丁香五月天综合东京热 | 少妇激情av一区二区 | 东北女人啪啪对白 | 国产成人久久精品流白浆 | 成人片黄网站色大片免费观看 | 九九久久精品国产免费看小说 | 天天拍夜夜添久久精品 | 国产精品久久久久影院嫩草 | 日本熟妇乱子伦xxxx | 亚洲小说图区综合在线 | 红桃av一区二区三区在线无码av | 一个人看的视频www在线 | 任你躁在线精品免费 | 国产内射爽爽大片视频社区在线 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品亚洲а∨无码播放麻豆 | 亚洲国产av美女网站 | 亚洲中文无码av永久不收费 | 亚洲成av人片天堂网无码】 | 精品国产aⅴ无码一区二区 | 午夜精品一区二区三区的区别 | 日本一区二区三区免费高清 | 青青青手机频在线观看 | 国产成人综合色在线观看网站 | 色老头在线一区二区三区 | 性史性农村dvd毛片 | 亚洲 高清 成人 动漫 | 天天躁日日躁狠狠躁免费麻豆 | 久久久久久亚洲精品a片成人 | 久久精品人妻少妇一区二区三区 | 国产一区二区不卡老阿姨 | 国产莉萝无码av在线播放 | 国产精品久久久av久久久 | 人人爽人人澡人人高潮 | 日韩人妻无码一区二区三区久久99 | 一本久久a久久精品亚洲 | 欧美xxxx黑人又粗又长 | 鲁一鲁av2019在线 | 国产精品久免费的黄网站 | 在线播放无码字幕亚洲 | 欧美性猛交内射兽交老熟妇 | 国产一区二区三区日韩精品 | 国产高潮视频在线观看 | 成人免费视频一区二区 | 久久久久se色偷偷亚洲精品av | 麻豆精品国产精华精华液好用吗 | 丰满岳乱妇在线观看中字无码 | 无码免费一区二区三区 | 蜜桃视频插满18在线观看 | 水蜜桃亚洲一二三四在线 | 亚洲色偷偷男人的天堂 | 国产香蕉97碰碰久久人人 | 亚洲精品午夜国产va久久成人 | 亚洲精品国偷拍自产在线麻豆 | 鲁一鲁av2019在线 | 国产精品毛片一区二区 | 亚洲国产成人a精品不卡在线 | 国产精品亚洲一区二区三区喷水 | 免费国产黄网站在线观看 | 2020久久超碰国产精品最新 | 中文字幕日韩精品一区二区三区 | 久久综合给合久久狠狠狠97色 | 国产午夜福利100集发布 | 欧美黑人巨大xxxxx | 日本xxxx色视频在线观看免费 | av香港经典三级级 在线 | 扒开双腿吃奶呻吟做受视频 | 理论片87福利理论电影 | 色窝窝无码一区二区三区色欲 | 欧美野外疯狂做受xxxx高潮 | 欧洲熟妇色 欧美 | 中文字幕av无码一区二区三区电影 | 久久精品国产一区二区三区 | 18禁止看的免费污网站 | 玩弄中年熟妇正在播放 | 少妇厨房愉情理9仑片视频 | 漂亮人妻洗澡被公强 日日躁 | 欧洲精品码一区二区三区免费看 | 成人三级无码视频在线观看 | 精品无码av一区二区三区 | 丰满护士巨好爽好大乳 | 国色天香社区在线视频 | 欧美黑人乱大交 | 色综合久久久久综合一本到桃花网 | 国产成人综合色在线观看网站 | 成人女人看片免费视频放人 | 55夜色66夜色国产精品视频 | 97色伦图片97综合影院 | 精品日本一区二区三区在线观看 | 人人妻人人藻人人爽欧美一区 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品久久久久影院嫩草 | 蜜臀av无码人妻精品 | 乌克兰少妇xxxx做受 | 亚洲爆乳大丰满无码专区 | 国产人妻久久精品二区三区老狼 | 蜜桃视频插满18在线观看 | 亚洲精品国产精品乱码视色 | 亚洲精品一区二区三区在线 | 国产精品无码一区二区三区不卡 | 精品国产成人一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 中文久久乱码一区二区 | 奇米影视888欧美在线观看 | 老太婆性杂交欧美肥老太 | 国产香蕉尹人综合在线观看 | 天堂а√在线地址中文在线 | 色窝窝无码一区二区三区色欲 | 无码福利日韩神码福利片 | 亚洲国产精品一区二区第一页 | 亚洲国产成人a精品不卡在线 | 99精品国产综合久久久久五月天 | 精品偷拍一区二区三区在线看 | 婷婷丁香六月激情综合啪 | 中文精品无码中文字幕无码专区 | 亚洲色成人中文字幕网站 | 亚洲热妇无码av在线播放 | 大肉大捧一进一出视频出来呀 | 蜜桃视频插满18在线观看 | 精品熟女少妇av免费观看 | 欧美日韩久久久精品a片 | √8天堂资源地址中文在线 | 丰满少妇熟乱xxxxx视频 | 久久天天躁狠狠躁夜夜免费观看 | 色窝窝无码一区二区三区色欲 | 国产精品成人av在线观看 | 性欧美疯狂xxxxbbbb | 日本丰满熟妇videos | 国产成人综合色在线观看网站 | 捆绑白丝粉色jk震动捧喷白浆 | 99久久久无码国产aaa精品 | 老熟女重囗味hdxx69 | 久久久久av无码免费网 | 色婷婷综合激情综在线播放 | 亚洲最大成人网站 | 久久人人爽人人爽人人片av高清 | 蜜臀av在线播放 久久综合激激的五月天 | 免费人成网站视频在线观看 | 亚洲综合久久一区二区 | 男人和女人高潮免费网站 | 亚洲熟悉妇女xxx妇女av | 国产亚洲精品久久久久久久 | 国産精品久久久久久久 | 熟妇女人妻丰满少妇中文字幕 | 曰韩少妇内射免费播放 | 无遮无挡爽爽免费视频 | 偷窥日本少妇撒尿chinese | 东京热一精品无码av | 成人欧美一区二区三区黑人 | 国产精品二区一区二区aⅴ污介绍 | 久久精品国产日本波多野结衣 | 麻豆成人精品国产免费 | 小泽玛莉亚一区二区视频在线 | 女人和拘做爰正片视频 | a片免费视频在线观看 | 午夜精品一区二区三区在线观看 | 激情五月综合色婷婷一区二区 | 色欲av亚洲一区无码少妇 | 熟妇激情内射com | 无码纯肉视频在线观看 | 中文字幕av无码一区二区三区电影 | 国产香蕉尹人综合在线观看 | 国内综合精品午夜久久资源 | 国产乱码精品一品二品 | 久久国产自偷自偷免费一区调 | 亚洲成av人片在线观看无码不卡 | 风流少妇按摩来高潮 | 狂野欧美性猛xxxx乱大交 | 久久久www成人免费毛片 | 性色欲网站人妻丰满中文久久不卡 | 十八禁视频网站在线观看 | 久久人人97超碰a片精品 | 性色欲情网站iwww九文堂 | 亚洲国产精品无码一区二区三区 | 日本一区二区三区免费播放 | 欧美怡红院免费全部视频 | 国产精品爱久久久久久久 | 精品人妻中文字幕有码在线 | 一二三四社区在线中文视频 | 色偷偷人人澡人人爽人人模 | 久久久久免费看成人影片 | 黑森林福利视频导航 | 丝袜美腿亚洲一区二区 | 亚洲 a v无 码免 费 成 人 a v | 久久亚洲a片com人成 | 久久人人97超碰a片精品 | 国产精品久久久久久久9999 | 欧美日韩一区二区综合 | 97人妻精品一区二区三区 | 国产乱码精品一品二品 | 无码纯肉视频在线观看 | 无人区乱码一区二区三区 | 最新国产麻豆aⅴ精品无码 | 性生交大片免费看女人按摩摩 | 日本一卡二卡不卡视频查询 | 亚洲熟妇色xxxxx欧美老妇y | 人妻少妇被猛烈进入中文字幕 | 国产午夜精品一区二区三区嫩草 | 亚洲欧洲日本综合aⅴ在线 | aⅴ亚洲 日韩 色 图网站 播放 | 日本精品人妻无码免费大全 | 午夜福利试看120秒体验区 | 国产精品亚洲综合色区韩国 | 免费无码的av片在线观看 | 免费视频欧美无人区码 | 国产熟妇另类久久久久 | 老太婆性杂交欧美肥老太 | 2020久久香蕉国产线看观看 | 亚洲精品中文字幕 | 国产在线aaa片一区二区99 | 少妇性l交大片 | 日产精品高潮呻吟av久久 | 日韩精品无码免费一区二区三区 | 国产精品毛多多水多 | 亚洲国产精品无码一区二区三区 | 内射白嫩少妇超碰 | 日本护士毛茸茸高潮 | 久久久久se色偷偷亚洲精品av | 三上悠亚人妻中文字幕在线 | 久久精品人妻少妇一区二区三区 | 中文字幕人妻无码一夲道 | 六十路熟妇乱子伦 | 亚洲 a v无 码免 费 成 人 a v | 大胆欧美熟妇xx | 中文精品久久久久人妻不卡 | 国产亚洲精品久久久久久国模美 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲精品久久久久久一区二区 | 丁香啪啪综合成人亚洲 | 一本久久伊人热热精品中文字幕 | 天天拍夜夜添久久精品 | 色婷婷综合中文久久一本 | 99视频精品全部免费免费观看 | 国产成人一区二区三区别 | 国产两女互慰高潮视频在线观看 | 狠狠噜狠狠狠狠丁香五月 | 亚洲天堂2017无码 | 精品少妇爆乳无码av无码专区 | 无码av中文字幕免费放 | 九月婷婷人人澡人人添人人爽 | 美女张开腿让人桶 | 天天综合网天天综合色 | 动漫av网站免费观看 | 麻豆果冻传媒2021精品传媒一区下载 | 成在人线av无码免观看麻豆 | 亚洲欧美日韩综合久久久 | 爆乳一区二区三区无码 | 丝袜 中出 制服 人妻 美腿 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产精品久久国产三级国 | 亚洲爆乳无码专区 | 久久久精品456亚洲影院 | 欧美国产日韩亚洲中文 | 国产猛烈高潮尖叫视频免费 | 无码播放一区二区三区 | 国产精品无码一区二区三区不卡 | 中文字幕无码视频专区 | 免费观看激色视频网站 | 黄网在线观看免费网站 | 麻豆国产人妻欲求不满 | 国产精品无码一区二区三区不卡 | 国产日产欧产精品精品app | 国产无av码在线观看 | 亚洲自偷自偷在线制服 | 欧美肥老太牲交大战 | 人妻无码αv中文字幕久久琪琪布 | 精品人妻人人做人人爽 | 无码帝国www无码专区色综合 | 久久久久久久人妻无码中文字幕爆 | 国产肉丝袜在线观看 | 国产av一区二区三区最新精品 | 内射白嫩少妇超碰 | 97精品人妻一区二区三区香蕉 | 99久久久国产精品无码免费 | 日本一卡2卡3卡四卡精品网站 | 亚洲va中文字幕无码久久不卡 | 中文无码成人免费视频在线观看 | 伊人色综合久久天天小片 | 久久国产自偷自偷免费一区调 | 日韩av激情在线观看 | 日本丰满护士爆乳xxxx | 少妇被粗大的猛进出69影院 | 1000部啪啪未满十八勿入下载 | 久久久久人妻一区精品色欧美 | 无码人妻精品一区二区三区不卡 | 国内老熟妇对白xxxxhd | 亚洲人亚洲人成电影网站色 | 国产成人综合在线女婷五月99播放 | 国产午夜手机精彩视频 | 久久99精品久久久久久动态图 | 蜜桃视频插满18在线观看 | 亚洲阿v天堂在线 | 欧美熟妇另类久久久久久多毛 | www国产亚洲精品久久久日本 | 日韩在线不卡免费视频一区 | 亚洲综合在线一区二区三区 | 精品久久综合1区2区3区激情 | 日本一区二区三区免费播放 | 欧美性猛交xxxx富婆 | 国产9 9在线 | 中文 | 久久天天躁狠狠躁夜夜免费观看 | 97无码免费人妻超级碰碰夜夜 | 亚洲欧美国产精品久久 | 免费观看激色视频网站 | 国产激情综合五月久久 | 成 人 网 站国产免费观看 | 国产99久久精品一区二区 | 欧美性色19p | 欧美日韩亚洲国产精品 | 一本色道久久综合亚洲精品不卡 | 国产激情一区二区三区 | 欧美黑人乱大交 | 精品 日韩 国产 欧美 视频 | 麻豆国产人妻欲求不满谁演的 | 牲欲强的熟妇农村老妇女视频 | 国产激情综合五月久久 | 国产精品久久精品三级 | 亚洲成av人综合在线观看 | 国产午夜无码视频在线观看 | 成人影院yy111111在线观看 | 97无码免费人妻超级碰碰夜夜 | 国内精品久久久久久中文字幕 | 男女爱爱好爽视频免费看 | 丁香啪啪综合成人亚洲 | 亚洲精品综合一区二区三区在线 | 色综合久久久无码网中文 | 国产性生交xxxxx无码 | 国产精品国产自线拍免费软件 | 国产99久久精品一区二区 | 日本欧美一区二区三区乱码 | 国产成人精品无码播放 | 搡女人真爽免费视频大全 | 国产熟女一区二区三区四区五区 | 国产亚洲精品久久久久久久久动漫 | 国产 精品 自在自线 | 欧美 日韩 亚洲 在线 | 人人妻人人澡人人爽人人精品浪潮 | 99久久久国产精品无码免费 | 国产人妻久久精品二区三区老狼 | 成年美女黄网站色大免费全看 | 国产人妻大战黑人第1集 | 亚洲第一无码av无码专区 | 欧美丰满熟妇xxxx | 午夜福利试看120秒体验区 | 国产熟妇另类久久久久 | 色欲久久久天天天综合网精品 | 波多野结衣 黑人 | 亚洲精品一区三区三区在线观看 | 99久久久无码国产aaa精品 | 99麻豆久久久国产精品免费 | 无码国产激情在线观看 | 天堂在线观看www | 国产av一区二区精品久久凹凸 | 国产av无码专区亚洲awww | 乌克兰少妇xxxx做受 | 天堂无码人妻精品一区二区三区 | 成在人线av无码免费 | 日韩精品无码一区二区中文字幕 | 日本爽爽爽爽爽爽在线观看免 | 亚洲の无码国产の无码影院 | 一本久久伊人热热精品中文字幕 | 亚洲熟妇自偷自拍另类 | 久久久久久久人妻无码中文字幕爆 | 激情内射亚州一区二区三区爱妻 | 国产绳艺sm调教室论坛 | 中文字幕av日韩精品一区二区 | 亚洲а∨天堂久久精品2021 | 欧洲精品码一区二区三区免费看 | 人妻aⅴ无码一区二区三区 | 又粗又大又硬又长又爽 | 东北女人啪啪对白 | 精品熟女少妇av免费观看 | 午夜精品久久久久久久 | 人妻熟女一区 | 黑人巨大精品欧美一区二区 | 色综合久久久无码网中文 | 欧美日韩亚洲国产精品 | 久久精品国产亚洲精品 | 精品久久综合1区2区3区激情 | 国产人妻精品午夜福利免费 | 国产猛烈高潮尖叫视频免费 | 亚洲欧美日韩成人高清在线一区 | 国产人妻精品午夜福利免费 | 日韩人妻无码一区二区三区久久99 | 岛国片人妻三上悠亚 | 牲欲强的熟妇农村老妇女 | 在线精品国产一区二区三区 | 兔费看少妇性l交大片免费 | 国产成人精品久久亚洲高清不卡 | 免费国产黄网站在线观看 | 亚洲理论电影在线观看 | 欧美性生交活xxxxxdddd | 日韩精品a片一区二区三区妖精 | 国产精品久久久久9999小说 | 波多野结衣一区二区三区av免费 | 国产女主播喷水视频在线观看 | 中国女人内谢69xxxx | 性史性农村dvd毛片 | 2020久久超碰国产精品最新 | 夜先锋av资源网站 | 大地资源网第二页免费观看 | 99久久无码一区人妻 | 国产综合色产在线精品 | 无码av岛国片在线播放 | 国产熟妇另类久久久久 | 六月丁香婷婷色狠狠久久 | 久久久www成人免费毛片 | 欧美成人高清在线播放 | 亚洲国产精品毛片av不卡在线 | 色偷偷人人澡人人爽人人模 | 国产免费久久久久久无码 | 性欧美疯狂xxxxbbbb | а√天堂www在线天堂小说 | 日韩亚洲欧美中文高清在线 | 精品国产一区二区三区四区在线看 | 在教室伦流澡到高潮hnp视频 | 熟女少妇在线视频播放 | 国产麻豆精品精东影业av网站 | 久久精品国产99精品亚洲 | 少妇久久久久久人妻无码 | 国产一区二区三区精品视频 | 亚洲aⅴ无码成人网站国产app | 国产国语老龄妇女a片 | 无码毛片视频一区二区本码 | 亚洲综合无码久久精品综合 | 精品 日韩 国产 欧美 视频 | 捆绑白丝粉色jk震动捧喷白浆 | 日本免费一区二区三区最新 | 色一情一乱一伦一视频免费看 | 精品国产麻豆免费人成网站 | www一区二区www免费 | 老熟妇乱子伦牲交视频 | а天堂中文在线官网 | 免费网站看v片在线18禁无码 | 精品亚洲韩国一区二区三区 | 久久精品国产亚洲精品 | 天堂а√在线地址中文在线 | 狠狠亚洲超碰狼人久久 | 亚洲欧美中文字幕5发布 | 日日摸天天摸爽爽狠狠97 | 99久久99久久免费精品蜜桃 | 久久 国产 尿 小便 嘘嘘 | 欧美精品无码一区二区三区 | 乱人伦中文视频在线观看 | 乱人伦人妻中文字幕无码久久网 | 国产成人无码区免费内射一片色欲 | 精品国产福利一区二区 | 人妻体内射精一区二区三四 | 丰满肥臀大屁股熟妇激情视频 | 亚洲另类伦春色综合小说 | 国产免费观看黄av片 | 久久精品国产一区二区三区 | 中文无码成人免费视频在线观看 | 亚洲成av人片在线观看无码不卡 | 六月丁香婷婷色狠狠久久 | 亚欧洲精品在线视频免费观看 | 久久zyz资源站无码中文动漫 | 欧洲美熟女乱又伦 | 国产亚洲精品久久久久久久 | 伊人久久大香线蕉午夜 | 成人性做爰aaa片免费看不忠 | 久久久久国色av免费观看性色 | 亚洲日韩av一区二区三区四区 | 国产一区二区三区精品视频 | 欧美丰满老熟妇xxxxx性 | 大屁股大乳丰满人妻 | 亲嘴扒胸摸屁股激烈网站 | 色婷婷久久一区二区三区麻豆 | 成人免费视频视频在线观看 免费 | 亚洲日本一区二区三区在线 | 扒开双腿吃奶呻吟做受视频 | 中国女人内谢69xxxx | 久久午夜无码鲁丝片秋霞 | 波多野结衣aⅴ在线 | 丰满人妻精品国产99aⅴ | 久久人人97超碰a片精品 | 少妇的肉体aa片免费 | 日本丰满熟妇videos | 中国大陆精品视频xxxx | 美女毛片一区二区三区四区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲码国产精品高潮在线 | 久久婷婷五月综合色国产香蕉 | 久久这里只有精品视频9 | 精品国产一区二区三区av 性色 | 国产精品99久久精品爆乳 | 成人欧美一区二区三区黑人 | 丰满人妻被黑人猛烈进入 | 无码播放一区二区三区 | 少妇无码av无码专区在线观看 | 日韩在线不卡免费视频一区 | av在线亚洲欧洲日产一区二区 | 永久免费观看美女裸体的网站 | 亚洲第一无码av无码专区 | 无码人妻黑人中文字幕 | 亚洲熟妇色xxxxx亚洲 | 国产成人无码专区 | 久久精品成人欧美大片 | 人人妻人人澡人人爽欧美精品 | 最近中文2019字幕第二页 | 国产色精品久久人妻 | 国产精品永久免费视频 | 久久人人爽人人人人片 | 精品乱子伦一区二区三区 | 2020最新国产自产精品 | 人妻与老人中文字幕 | 国产精品亚洲а∨无码播放麻豆 | 东京热男人av天堂 | 精品亚洲韩国一区二区三区 | 无码一区二区三区在线观看 | 漂亮人妻洗澡被公强 日日躁 | 小鲜肉自慰网站xnxx | 丝袜 中出 制服 人妻 美腿 | 久久无码中文字幕免费影院蜜桃 | 撕开奶罩揉吮奶头视频 | 免费观看又污又黄的网站 | a国产一区二区免费入口 | 极品尤物被啪到呻吟喷水 | 国产莉萝无码av在线播放 | 亚洲七七久久桃花影院 | 99精品久久毛片a片 | 天天av天天av天天透 | 国产无av码在线观看 | 成人免费无码大片a毛片 | 人妻天天爽夜夜爽一区二区 | 国产精品久久久久久亚洲毛片 | 狠狠综合久久久久综合网 | 国产人妖乱国产精品人妖 | 亚洲日韩一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 人人妻人人澡人人爽人人精品浪潮 | 国产舌乚八伦偷品w中 | 色偷偷人人澡人人爽人人模 | 黑人巨大精品欧美黑寡妇 | 久久无码专区国产精品s | 国产亚洲精品精品国产亚洲综合 | 国产一区二区三区四区五区加勒比 | 婷婷五月综合激情中文字幕 | 99久久精品国产一区二区蜜芽 | 亚洲天堂2017无码 | 亚洲爆乳精品无码一区二区三区 | 日本免费一区二区三区最新 | 国产人成高清在线视频99最全资源 | 麻豆国产97在线 | 欧洲 | 亚洲精品午夜国产va久久成人 | 日本一区二区三区免费高清 | 99久久精品午夜一区二区 | 午夜福利一区二区三区在线观看 | 亚洲成a人片在线观看无码3d | 日日干夜夜干 | 无码人妻出轨黑人中文字幕 | 人人超人人超碰超国产 | 少妇性荡欲午夜性开放视频剧场 | 国内精品九九久久久精品 | 一区二区三区乱码在线 | 欧洲 | 午夜时刻免费入口 | 婷婷丁香五月天综合东京热 | 成熟妇人a片免费看网站 | 黑森林福利视频导航 | 国产特级毛片aaaaaaa高清 | 中文字幕中文有码在线 | 欧洲精品码一区二区三区免费看 | 国产绳艺sm调教室论坛 | 丝袜人妻一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 午夜福利一区二区三区在线观看 | 乌克兰少妇性做爰 | 扒开双腿吃奶呻吟做受视频 | 亚洲人成人无码网www国产 | 国语自产偷拍精品视频偷 | 国产综合色产在线精品 | 在线天堂新版最新版在线8 | 小鲜肉自慰网站xnxx | 婷婷丁香六月激情综合啪 | 中文精品无码中文字幕无码专区 | 色婷婷久久一区二区三区麻豆 | 午夜精品久久久内射近拍高清 | 天下第一社区视频www日本 | 国产无av码在线观看 | 国产在线一区二区三区四区五区 | 婷婷五月综合激情中文字幕 | 夜夜躁日日躁狠狠久久av | 国产xxx69麻豆国语对白 | 无人区乱码一区二区三区 | 激情人妻另类人妻伦 | 伊人久久大香线蕉av一区二区 | 东京热男人av天堂 | 中国女人内谢69xxxxxa片 | 成人片黄网站色大片免费观看 | 国产麻豆精品精东影业av网站 | 久久精品国产亚洲精品 | 又紧又大又爽精品一区二区 | 牲欲强的熟妇农村老妇女 | 国产精品va在线观看无码 | 成熟人妻av无码专区 | 久久精品国产一区二区三区 | 成人欧美一区二区三区 | 亚洲中文字幕无码一久久区 | 麻豆国产丝袜白领秘书在线观看 | 亚洲精品欧美二区三区中文字幕 | 日日夜夜撸啊撸 | 性欧美大战久久久久久久 | 欧美日韩色另类综合 | 97久久精品无码一区二区 | 亚洲色无码一区二区三区 | 国产黑色丝袜在线播放 | 中文字幕av日韩精品一区二区 | 亚洲乱码国产乱码精品精 | av人摸人人人澡人人超碰下载 | 亚洲成a人片在线观看日本 | 亚洲国产精品美女久久久久 | 欧美日韩视频无码一区二区三 | 人人妻在人人 | 99久久亚洲精品无码毛片 | 久久亚洲精品成人无码 | 日韩人妻少妇一区二区三区 | 国产精品国产三级国产专播 | 国产无遮挡吃胸膜奶免费看 | 午夜福利不卡在线视频 | 色情久久久av熟女人妻网站 | 亚洲 日韩 欧美 成人 在线观看 | 国产精品久久久久无码av色戒 | 亚洲国产精品久久久天堂 | 牲欲强的熟妇农村老妇女 | 精品一二三区久久aaa片 | 波多野结衣av在线观看 | 天天躁日日躁狠狠躁免费麻豆 | 国产亚洲精品精品国产亚洲综合 | 奇米影视888欧美在线观看 | 色偷偷人人澡人人爽人人模 | 成 人 免费观看网站 | 婷婷六月久久综合丁香 | 日韩欧美中文字幕公布 | 亚洲中文字幕无码中文字在线 | 亚洲啪av永久无码精品放毛片 | 欧洲欧美人成视频在线 | 久久国产精品偷任你爽任你 | 岛国片人妻三上悠亚 | 亚洲日韩av一区二区三区中文 | 欧美xxxxx精品 | 成人片黄网站色大片免费观看 | 亚洲精品一区二区三区在线 | 日本一区二区三区免费高清 | 欧美兽交xxxx×视频 | 动漫av一区二区在线观看 | 国产美女极度色诱视频www | 欧美老妇与禽交 | 波多野结衣高清一区二区三区 | 老子影院午夜精品无码 | 欧洲美熟女乱又伦 | 一个人看的www免费视频在线观看 | 在线 国产 欧美 亚洲 天堂 | 久久99久久99精品中文字幕 | 国内精品久久久久久中文字幕 | 四虎国产精品免费久久 | 狠狠躁日日躁夜夜躁2020 | 黑人粗大猛烈进出高潮视频 | 人人爽人人澡人人高潮 | 99久久婷婷国产综合精品青草免费 | 啦啦啦www在线观看免费视频 | 一二三四在线观看免费视频 | 国产午夜福利100集发布 | 丰满少妇人妻久久久久久 | 大屁股大乳丰满人妻 | av人摸人人人澡人人超碰下载 | 99麻豆久久久国产精品免费 | 欧美日韩一区二区免费视频 | 欧美成人午夜精品久久久 | 国产成人精品久久亚洲高清不卡 | 精品亚洲成av人在线观看 | 精品无人国产偷自产在线 | 女人被爽到呻吟gif动态图视看 | 亚洲伊人久久精品影院 | 亚洲日本一区二区三区在线 | 爆乳一区二区三区无码 | 国产亚洲美女精品久久久2020 | 99精品久久毛片a片 | 无遮挡国产高潮视频免费观看 | 国产国语老龄妇女a片 | 久久久久99精品国产片 | 久久国产自偷自偷免费一区调 | 欧美老妇与禽交 | 精品 日韩 国产 欧美 视频 | 婷婷色婷婷开心五月四房播播 | 97精品人妻一区二区三区香蕉 | 麻豆国产人妻欲求不满 | 玩弄中年熟妇正在播放 | 精品欧洲av无码一区二区三区 | 97夜夜澡人人双人人人喊 | 中文字幕无码日韩欧毛 | 免费男性肉肉影院 | 国产日产欧产精品精品app | 国产精品爱久久久久久久 | 国产精品资源一区二区 | 狠狠噜狠狠狠狠丁香五月 | 国产人妖乱国产精品人妖 | 99久久婷婷国产综合精品青草免费 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 99久久精品日本一区二区免费 | 无码人妻出轨黑人中文字幕 | 人妻夜夜爽天天爽三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产成人人人97超碰超爽8 | 色诱久久久久综合网ywww | 日韩无套无码精品 | 在线a亚洲视频播放在线观看 | 在线观看免费人成视频 | 久久久久国色av免费观看性色 | 国产精品美女久久久久av爽李琼 | 免费男性肉肉影院 | 又大又硬又黄的免费视频 | 在线精品国产一区二区三区 | 日韩精品一区二区av在线 | 人妻天天爽夜夜爽一区二区 | 欧美 丝袜 自拍 制服 另类 | 无码国产乱人伦偷精品视频 | 久久国产精品二国产精品 | 日韩av无码中文无码电影 | 国产精品内射视频免费 | 国产va免费精品观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 精品国产aⅴ无码一区二区 | 国产女主播喷水视频在线观看 | 欧美熟妇另类久久久久久不卡 | 精品人妻av区 | 99麻豆久久久国产精品免费 | 日韩欧美群交p片內射中文 | 好爽又高潮了毛片免费下载 | 综合激情五月综合激情五月激情1 | 东京无码熟妇人妻av在线网址 | 成人一区二区免费视频 | 麻豆人妻少妇精品无码专区 | 国语精品一区二区三区 | 久久人妻内射无码一区三区 | 国产香蕉尹人视频在线 | 水蜜桃亚洲一二三四在线 | 一区二区三区高清视频一 | 四虎影视成人永久免费观看视频 | 奇米影视7777久久精品 | 国产xxx69麻豆国语对白 | 未满小14洗澡无码视频网站 | 成在人线av无码免观看麻豆 | 午夜不卡av免费 一本久久a久久精品vr综合 | 久久亚洲精品中文字幕无男同 | 亚洲啪av永久无码精品放毛片 | 色噜噜亚洲男人的天堂 | 国产在线aaa片一区二区99 | 久久亚洲中文字幕精品一区 | 网友自拍区视频精品 | 3d动漫精品啪啪一区二区中 | 在线观看国产一区二区三区 | 国产一区二区三区日韩精品 | 国产精品福利视频导航 | 欧美成人高清在线播放 | 色狠狠av一区二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 无码av最新清无码专区吞精 | 国产精品亚洲专区无码不卡 | 欧美国产日产一区二区 | 成人免费视频视频在线观看 免费 | 久久亚洲中文字幕无码 | 蜜桃av抽搐高潮一区二区 | 国产农村乱对白刺激视频 | 少妇一晚三次一区二区三区 | 久久精品丝袜高跟鞋 | 亚洲日本一区二区三区在线 | 2019nv天堂香蕉在线观看 | 精品久久久久久亚洲精品 | 亚洲自偷自拍另类第1页 | 亚洲小说春色综合另类 | 无码免费一区二区三区 | 麻豆精产国品 | 欧美 日韩 人妻 高清 中文 | 18禁黄网站男男禁片免费观看 | 一区二区三区乱码在线 | 欧洲 | 一二三四在线观看免费视频 | 精品夜夜澡人妻无码av蜜桃 | 51国偷自产一区二区三区 | 精品国产一区二区三区av 性色 | 男人的天堂2018无码 | 三级4级全黄60分钟 | 国内揄拍国内精品人妻 | 免费人成在线观看网站 | 久久精品国产一区二区三区肥胖 | 欧美喷潮久久久xxxxx | 18黄暴禁片在线观看 | ass日本丰满熟妇pics | 日韩人妻无码中文字幕视频 | 亚洲男人av香蕉爽爽爽爽 | 午夜性刺激在线视频免费 | 粗大的内捧猛烈进出视频 | 色婷婷综合中文久久一本 | 成 人 网 站国产免费观看 | 亚洲最大成人网站 | 国产成人精品视频ⅴa片软件竹菊 | 国产香蕉尹人综合在线观看 | 色狠狠av一区二区三区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 在线播放无码字幕亚洲 | 日日噜噜噜噜夜夜爽亚洲精品 | 人人爽人人澡人人人妻 | 性生交大片免费看女人按摩摩 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品久久国产三级国 | 影音先锋中文字幕无码 | 久久99久久99精品中文字幕 | 男人的天堂av网站 | 内射欧美老妇wbb | 久久综合色之久久综合 | 国产亚洲美女精品久久久2020 | 欧美xxxxx精品 | 久久精品成人欧美大片 | 麻豆人妻少妇精品无码专区 | 巨爆乳无码视频在线观看 | 99精品国产综合久久久久五月天 | 日本一卡2卡3卡四卡精品网站 | 国内揄拍国内精品少妇国语 | 激情综合激情五月俺也去 | 性欧美牲交在线视频 | 波多野结衣av一区二区全免费观看 | 国产真实夫妇视频 | 亚洲精品中文字幕久久久久 | 亚洲精品www久久久 | 成人av无码一区二区三区 | 欧美 亚洲 国产 另类 | 国产精品高潮呻吟av久久4虎 | 欧洲vodafone精品性 | 亚洲人成影院在线观看 | a国产一区二区免费入口 | 成年美女黄网站色大免费全看 | 久久国产精品二国产精品 | 日本va欧美va欧美va精品 | 国产精品毛片一区二区 | 少妇太爽了在线观看 | 国产人妻精品一区二区三区不卡 | 久久99精品久久久久久动态图 | 玩弄人妻少妇500系列视频 | 久久久国产一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 国产成人无码午夜视频在线观看 | 成人aaa片一区国产精品 | 狠狠综合久久久久综合网 | 夜先锋av资源网站 | 性做久久久久久久免费看 | 亚洲精品一区二区三区大桥未久 | 少妇太爽了在线观看 | 亚洲国产精品毛片av不卡在线 | 奇米影视7777久久精品 | 国产亚洲精品久久久久久久久动漫 | 国产偷国产偷精品高清尤物 | 老子影院午夜伦不卡 | 中文精品无码中文字幕无码专区 | 中文字幕乱码人妻二区三区 | 亚洲啪av永久无码精品放毛片 | 国产性生交xxxxx无码 | 国产成人精品一区二区在线小狼 | 在线看片无码永久免费视频 | 国产精品人人爽人人做我的可爱 | 久久zyz资源站无码中文动漫 | 精品少妇爆乳无码av无码专区 | 久久精品99久久香蕉国产色戒 | 亚洲精品鲁一鲁一区二区三区 | 亚洲乱码日产精品bd | 国产精品久久久av久久久 | 国产成人午夜福利在线播放 | 55夜色66夜色国产精品视频 | 日本一卡2卡3卡四卡精品网站 | 在线а√天堂中文官网 | 无码精品国产va在线观看dvd | 国产香蕉97碰碰久久人人 | 欧美丰满老熟妇xxxxx性 | 西西人体www44rt大胆高清 | 樱花草在线播放免费中文 | 精品国产一区二区三区av 性色 | 人妻少妇被猛烈进入中文字幕 | 欧美刺激性大交 | 中文字幕日产无线码一区 | 久久99精品国产.久久久久 | 日韩欧美成人免费观看 | 国产午夜精品一区二区三区嫩草 | 精品国产福利一区二区 | 免费观看激色视频网站 | 成人av无码一区二区三区 | 婷婷丁香五月天综合东京热 | 亚洲国产av精品一区二区蜜芽 | 在线观看国产午夜福利片 | 国产精品无码一区二区桃花视频 | 清纯唯美经典一区二区 | 久久久久99精品成人片 | 乱人伦中文视频在线观看 | 中文字幕无码日韩专区 | 亚洲精品美女久久久久久久 | 国产热a欧美热a在线视频 | 麻豆国产人妻欲求不满谁演的 | 99久久人妻精品免费二区 | 99视频精品全部免费免费观看 | 无码人妻丰满熟妇区五十路百度 | 玩弄中年熟妇正在播放 | 三上悠亚人妻中文字幕在线 | 国产精品久久久午夜夜伦鲁鲁 | 久久久久国色av免费观看性色 | 丰满护士巨好爽好大乳 | 亚洲成av人影院在线观看 | 久久久久久久女国产乱让韩 | 国产精品久久久久久亚洲毛片 | 大肉大捧一进一出视频出来呀 | 国产精品99久久精品爆乳 | 国产精品资源一区二区 | 亚洲欧美国产精品久久 | 日韩成人一区二区三区在线观看 | 国产精品久久国产三级国 | 欧美日韩一区二区三区自拍 | 亚洲精品美女久久久久久久 | 国产欧美熟妇另类久久久 | 亚洲精品成人福利网站 | 嫩b人妻精品一区二区三区 | 色诱久久久久综合网ywww | 国产午夜亚洲精品不卡下载 | 中文字幕无码av波多野吉衣 | 无码国产激情在线观看 | 中文字幕 亚洲精品 第1页 | 一本一道久久综合久久 | 国产凸凹视频一区二区 | 人妻插b视频一区二区三区 | 永久免费精品精品永久-夜色 | 久久zyz资源站无码中文动漫 | 1000部夫妻午夜免费 | 亚洲色成人中文字幕网站 | 久久 国产 尿 小便 嘘嘘 | 99精品无人区乱码1区2区3区 | 欧美日韩在线亚洲综合国产人 | 久久久久久九九精品久 | 无码人妻av免费一区二区三区 | 亚洲人成影院在线观看 | 日韩精品久久久肉伦网站 | 欧美第一黄网免费网站 | 99久久无码一区人妻 | 51国偷自产一区二区三区 | 欧美老人巨大xxxx做受 | 麻豆国产97在线 | 欧洲 | 国产偷抇久久精品a片69 | 国产成人无码av一区二区 | 精品一区二区三区无码免费视频 | 日本xxxx色视频在线观看免费 | 国产网红无码精品视频 | 欧美丰满老熟妇xxxxx性 | 欧美性猛交xxxx富婆 | 天堂亚洲2017在线观看 | 精品水蜜桃久久久久久久 | 欧美日本免费一区二区三区 | 少妇人妻偷人精品无码视频 | 亚洲日韩av片在线观看 | 欧美 日韩 人妻 高清 中文 | 强伦人妻一区二区三区视频18 | 亚洲中文字幕在线无码一区二区 | 奇米影视888欧美在线观看 | 熟女体下毛毛黑森林 | 波多野结衣高清一区二区三区 | 中文字幕无码免费久久9一区9 | 亚洲国产精品无码久久久久高潮 | 成人精品一区二区三区中文字幕 | 国产精品久久久久久无码 | 久久久精品成人免费观看 | 女人高潮内射99精品 | 久久久国产精品无码免费专区 | 亚洲国产精品无码一区二区三区 | 成人精品天堂一区二区三区 | 99久久久无码国产精品免费 | 人人爽人人爽人人片av亚洲 | 精品久久久久久亚洲精品 | 亲嘴扒胸摸屁股激烈网站 | 精品乱子伦一区二区三区 | 久久精品女人天堂av免费观看 | 成熟女人特级毛片www免费 | 无码吃奶揉捏奶头高潮视频 | 久久久久久久女国产乱让韩 | 久久综合九色综合欧美狠狠 | 秋霞成人午夜鲁丝一区二区三区 | 国产精品香蕉在线观看 | 国产精品美女久久久网av | 久久无码中文字幕免费影院蜜桃 | 国产热a欧美热a在线视频 | 色五月五月丁香亚洲综合网 | 丰满少妇熟乱xxxxx视频 | 欧美乱妇无乱码大黄a片 | 日本护士xxxxhd少妇 | 亚洲综合另类小说色区 | 色一情一乱一伦一区二区三欧美 | 亚洲の无码国产の无码影院 | 国产在线精品一区二区三区直播 | 国产精品久久福利网站 | av无码电影一区二区三区 | 99久久人妻精品免费二区 | 老头边吃奶边弄进去呻吟 | 欧美人妻一区二区三区 | 一本色道久久综合狠狠躁 | 成在人线av无码免费 | 午夜无码人妻av大片色欲 | 扒开双腿吃奶呻吟做受视频 | 亚洲成在人网站无码天堂 | 又大又硬又黄的免费视频 | 国产精品无码一区二区桃花视频 | 99久久精品国产一区二区蜜芽 | 青青久在线视频免费观看 | 免费无码av一区二区 | 国语自产偷拍精品视频偷 | 玩弄少妇高潮ⅹxxxyw | 亚洲经典千人经典日产 | 久久 国产 尿 小便 嘘嘘 | 丰满妇女强制高潮18xxxx | 久久久久亚洲精品中文字幕 | 亚洲狠狠婷婷综合久久 | 在线观看免费人成视频 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲va中文字幕无码久久不卡 | 亚洲 欧美 激情 小说 另类 | 丰满肥臀大屁股熟妇激情视频 | 正在播放东北夫妻内射 | 久久综合给合久久狠狠狠97色 | 免费网站看v片在线18禁无码 | a在线亚洲男人的天堂 | 午夜福利试看120秒体验区 | 无码吃奶揉捏奶头高潮视频 | 2019nv天堂香蕉在线观看 | 国产亚洲精品久久久久久大师 | 久久国语露脸国产精品电影 | 日韩人妻无码一区二区三区久久99 | 国产亚洲精品久久久久久久 | 久久久久亚洲精品男人的天堂 | 中文字幕av伊人av无码av | 无码av免费一区二区三区试看 | 国产热a欧美热a在线视频 | 国产免费观看黄av片 | 一本色道久久综合狠狠躁 |