精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java 線程池 ThreadPoolExecutor 八種拒絕策略淺析

開(kāi)發(fā) 后端
談到j(luò)ava的線程池最熟悉的莫過(guò)于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的這個(gè)api,大大的簡(jiǎn)化了多線程代碼的開(kāi)發(fā)。

 

前言

談到j(luò)ava的線程池最熟悉的莫過(guò)于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的這個(gè)api,大大的簡(jiǎn)化了多線程代碼的開(kāi)發(fā)。而不論你用FixedThreadPool還是CachedThreadPool其背后實(shí)現(xiàn)都是ThreadPoolExecutor。ThreadPoolExecutor是一個(gè)典型的緩存池化設(shè)計(jì)的產(chǎn)物,因?yàn)槌刈佑写笮。?dāng)池子體積不夠承載時(shí),就涉及到拒絕策略。JDK中已經(jīng)預(yù)設(shè)了4種線程池拒絕策略,下面結(jié)合場(chǎng)景詳細(xì)聊聊這些策略的使用場(chǎng)景,以及我們還能擴(kuò)展哪些拒絕策略。

 

池化設(shè)計(jì)思想

池話設(shè)計(jì)應(yīng)該不是一個(gè)新名詞。我們常見(jiàn)的如java線程池、jdbc連接池、redis連接池等就是這類(lèi)設(shè)計(jì)的代表實(shí)現(xiàn)。這種設(shè)計(jì)會(huì)初始預(yù)設(shè)資源,解決的問(wèn)題就是抵消每次獲取資源的消耗,如創(chuàng)建線程的開(kāi)銷(xiāo),獲取遠(yuǎn)程連接的開(kāi)銷(xiāo)等。就好比你去食堂打飯,打飯的大媽會(huì)先把飯盛好幾份放那里,你來(lái)了就直接拿著飯盒加菜即可,不用再臨時(shí)又盛飯又打菜,效率就高了。除了初始化資源,池化設(shè)計(jì)還包括如下這些特征:池子的初始值、池子的活躍值、池子的最大值等,這些特征可以直接映射到j(luò)ava線程池和數(shù)據(jù)庫(kù)連接池的成員屬性中。

線程池觸發(fā)拒絕策略的時(shí)機(jī)

和數(shù)據(jù)源連接池不一樣,線程池除了初始大小和池子最大值,還多了一個(gè)阻塞隊(duì)列來(lái)緩沖。數(shù)據(jù)源連接池一般請(qǐng)求的連接數(shù)超過(guò)連接池的最大值的時(shí)候就會(huì)觸發(fā)拒絕策略,策略一般是阻塞等待設(shè)置的時(shí)間或者直接拋異常。而線程池的觸發(fā)時(shí)機(jī)如下圖:

 

Java 線程池 ThreadPoolExecutor 八種拒絕策略淺析

 

如圖,想要了解線程池什么時(shí)候觸發(fā)拒絕粗略,需要明確上面三個(gè)參數(shù)的具體含義,是這三個(gè)參數(shù)總體協(xié)調(diào)的結(jié)果,而不是簡(jiǎn)單的超過(guò)最大線程數(shù)就會(huì)觸發(fā)線程拒絕粗略,當(dāng)提交的任務(wù)數(shù)大于corePoolSize時(shí),會(huì)優(yōu)先放到隊(duì)列緩沖區(qū),只有填滿了緩沖區(qū)后,才會(huì)判斷當(dāng)前運(yùn)行的任務(wù)是否大于maxPoolSize,小于時(shí)會(huì)新建線程處理。大于時(shí)就觸發(fā)了拒絕策略,總結(jié)就是:當(dāng)前提交任務(wù)數(shù)大于(maxPoolSize + queueCapacity)時(shí)就會(huì)觸發(fā)線程池的拒絕策略了。

JDK內(nèi)置4種線程池拒絕策略

拒絕策略接口定義

在分析JDK自帶的線程池拒絕策略前,先看下JDK定義的 拒絕策略接口,如下:

  1. public interface RejectedExecutionHandler { 
  2.  void rejectedExecution(Runnable r, ThreadPoolExecutor executor); 

接口定義很明確,當(dāng)觸發(fā)拒絕策略時(shí),線程池會(huì)調(diào)用你設(shè)置的具體的策略,將當(dāng)前提交的任務(wù)以及線程池實(shí)例本身傳遞給你處理,具體作何處理,不同場(chǎng)景會(huì)有不同的考慮,下面看JDK為我們內(nèi)置了哪些實(shí)現(xiàn):

CallerRunsPolicy(調(diào)用者運(yùn)行策略)

  1. public static class CallerRunsPolicy implements RejectedExecutionHandler { 
  2.  public CallerRunsPolicy() { } 
  3.  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  4.  if (!e.isShutdown()) { 
  5.  r.run(); 
  6.  } 
  7.  } 
  8.  } 
  • 功能:當(dāng)觸發(fā)拒絕策略時(shí),只要線程池沒(méi)有關(guān)閉,就由提交任務(wù)的當(dāng)前線程處理。
  • 使用場(chǎng)景:一般在不允許失敗的、對(duì)性能要求不高、并發(fā)量較小的場(chǎng)景下使用,因?yàn)榫€程池一般情況下不會(huì)關(guān)閉,也就是提交的任務(wù)一定會(huì)被運(yùn)行,但是由于是調(diào)用者線程自己執(zhí)行的,當(dāng)多次提交任務(wù)時(shí),就會(huì)阻塞后續(xù)任務(wù)執(zhí)行,性能和效率自然就慢了。

AbortPolicy(中止策略)

  1. public static class AbortPolicy implements RejectedExecutionHandler { 
  2.  public AbortPolicy() { } 
  3.  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  4.  throw new RejectedExecutionException("Task " + r.toString() + 
  5.  " rejected from " + 
  6.  e.toString()); 
  7.  } 
  8.  } 
  • 功能:當(dāng)觸發(fā)拒絕策略時(shí),直接拋出拒絕執(zhí)行的異常,中止策略的意思也就是打斷當(dāng)前執(zhí)行流程
  • 使用場(chǎng)景:這個(gè)就沒(méi)有特殊的場(chǎng)景了,但是一點(diǎn)要正確處理拋出的異常。ThreadPoolExecutor中默認(rèn)的策略就是AbortPolicy,ExecutorService接口的系列ThreadPoolExecutor因?yàn)槎紱](méi)有顯示的設(shè)置拒絕策略,所以默認(rèn)的都是這個(gè)。但是請(qǐng)注意,ExecutorService中的線程池實(shí)例隊(duì)列都是無(wú)界的,也就是說(shuō)把內(nèi)存撐爆了都不會(huì)觸發(fā)拒絕策略。當(dāng)自己自定義線程池實(shí)例時(shí),使用這個(gè)策略一定要處理好觸發(fā)策略時(shí)拋的異常,因?yàn)樗麜?huì)打斷當(dāng)前的執(zhí)行流程。

DiscardPolicy(丟棄策略)

  1. public static class DiscardPolicy implements RejectedExecutionHandler { 
  2.  public DiscardPolicy() { } 
  3.  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  4.  } 
  5.  } 
  • 功能:直接靜悄悄的丟棄這個(gè)任務(wù),不觸發(fā)任何動(dòng)作
  • 使用場(chǎng)景:如果你提交的任務(wù)無(wú)關(guān)緊要,你就可以使用它 。因?yàn)樗褪莻€(gè)空實(shí)現(xiàn),會(huì)悄無(wú)聲息的吞噬你的的任務(wù)。所以這個(gè)策略基本上不用了

DiscardOldestPolicy(棄老策略)

  1. public static class DiscardOldestPolicy implements RejectedExecutionHandler { 
  2.  public DiscardOldestPolicy() { } 
  3.  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  4.  if (!e.isShutdown()) { 
  5.  e.getQueue().poll(); 
  6.  e.execute(r); 
  7.  } 
  8.  } 
  9.  } 
  • 功能:如果線程池未關(guān)閉,就彈出隊(duì)列頭部的元素,然后嘗試執(zhí)行
  • 使用場(chǎng)景:這個(gè)策略還是會(huì)丟棄任務(wù),丟棄時(shí)也是毫無(wú)聲息,但是特點(diǎn)是丟棄的是老的未執(zhí)行的任務(wù),而且是待執(zhí)行優(yōu)先級(jí)較高的任務(wù)。基于這個(gè)特性,我能想到的場(chǎng)景就是,發(fā)布消息,和修改消息,當(dāng)消息發(fā)布出去后,還未執(zhí)行,此時(shí)更新的消息又來(lái)了,這個(gè)時(shí)候未執(zhí)行的消息的版本比現(xiàn)在提交的消息版本要低就可以被丟棄了。因?yàn)殛?duì)列中還有可能存在消息版本更低的消息會(huì)排隊(duì)執(zhí)行,所以在真正處理消息的時(shí)候一定要做好消息的版本比較

第三方實(shí)現(xiàn)的拒絕策略

dubbo中的線程拒絕策略

  1. public class AbortPolicyWithReport extends ThreadPoolExecutor.AbortPolicy { 
  2.  protected static final Logger logger = LoggerFactory.getLogger(AbortPolicyWithReport.class); 
  3.  private final String threadName; 
  4.  private final URL url; 
  5.  private static volatile long lastPrintTime = 0; 
  6.  private static Semaphore guard = new Semaphore(1); 
  7.  public AbortPolicyWithReport(String threadName, URL url) { 
  8.  this.threadName = threadName; 
  9.  this.url = url; 
  10.  } 
  11.  @Override 
  12.  public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { 
  13.  String msg = String.format("Thread pool is EXHAUSTED!" + 
  14.  " Thread Name: %s, Pool Size: %d (active: %d, core: %d, max: %d, largest: %d), Task: %d (completed: %d)," + 
  15.  " Executor status:(isShutdown:%s, isTerminated:%s, isTerminating:%s), in %s://%s:%d!"
  16.  threadName, e.getPoolSize(), e.getActiveCount(), e.getCorePoolSize(), e.getMaximumPoolSize(), e.getLargestPoolSize(), 
  17.  e.getTaskCount(), e.getCompletedTaskCount(), e.isShutdown(), e.isTerminated(), e.isTerminating(), 
  18.  url.getProtocol(), url.getIp(), url.getPort()); 
  19.  logger.warn(msg); 
  20.  dumpJStack(); 
  21.  throw new RejectedExecutionException(msg); 
  22.  } 
  23.  private void dumpJStack() { 
  24.  //省略實(shí)現(xiàn) 
  25.  } 

可以看到,當(dāng)dubbo的工作線程觸發(fā)了線程拒絕后,主要做了三個(gè)事情,原則就是盡量讓使用者清楚觸發(fā)線程拒絕策略的真實(shí)原因

  • 輸出了一條警告級(jí)別的日志,日志內(nèi)容為線程池的詳細(xì)設(shè)置參數(shù),以及線程池當(dāng)前的狀態(tài),還有當(dāng)前拒絕任務(wù)的一些詳細(xì)信息。可以說(shuō),這條日志,使用dubbo的有過(guò)生產(chǎn)運(yùn)維經(jīng)驗(yàn)的或多或少是見(jiàn)過(guò)的,這個(gè)日志簡(jiǎn)直就是日志打印的典范,其他的日志打印的典范還有spring。得益于這么詳細(xì)的日志,可以很容易定位到問(wèn)題所在
  • 輸出當(dāng)前線程堆棧詳情,這個(gè)太有用了,當(dāng)你通過(guò)上面的日志信息還不能定位問(wèn)題時(shí),案發(fā)現(xiàn)場(chǎng)的dump線程上下文信息就是你發(fā)現(xiàn)問(wèn)題的救命稻草。
  • 繼續(xù)拋出拒絕執(zhí)行異常,使本次任務(wù)失敗,這個(gè)繼承了JDK默認(rèn)拒絕策略的特性

Netty中的線程池拒絕策略

  1. private static final class NewThreadRunsPolicy implements RejectedExecutionHandler { 
  2.  NewThreadRunsPolicy() { 
  3.  super(); 
  4.  } 
  5.  public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { 
  6.  try { 
  7.  final Thread t = new Thread(r, "Temporary task executor"); 
  8.  t.start(); 
  9.  } catch (Throwable e) { 
  10.  throw new RejectedExecutionException( 
  11.  "Failed to start a new thread", e); 
  12.  } 
  13.  } 
  14.  } 

Netty中的實(shí)現(xiàn)很像JDK中的CallerRunsPolicy,舍不得丟棄任務(wù)。不同的是,CallerRunsPolicy是直接在調(diào)用者線程執(zhí)行的任務(wù)。而 Netty是新建了一個(gè)線程來(lái)處理的。所以,Netty的實(shí)現(xiàn)相較于調(diào)用者執(zhí)行策略的使用面就可以擴(kuò)展到支持高效率高性能的場(chǎng)景了。但是也要注意一點(diǎn),Netty的實(shí)現(xiàn)里,在創(chuàng)建線程時(shí)未做任何的判斷約束,也就是說(shuō)只要系統(tǒng)還有資源就會(huì)創(chuàng)建新的線程來(lái)處理,直到new不出新的線程了,才會(huì)拋創(chuàng)建線程失敗的異常

activeMq中的線程池拒絕策略

  1. new RejectedExecutionHandler() { 
  2.  @Override 
  3.  public void rejectedExecution(final Runnable r, final ThreadPoolExecutor executor) { 
  4.  try { 
  5.  executor.getQueue().offer(r, 60, TimeUnit.SECONDS); 
  6.  } catch (InterruptedException e) { 
  7.  throw new RejectedExecutionException("Interrupted waiting for BrokerService.worker"); 
  8.  } 
  9.  throw new RejectedExecutionException("Timed Out while attempting to enqueue Task."); 
  10.  } 
  11.  }); 

activeMq中的策略屬于最大努力執(zhí)行任務(wù)型,當(dāng)觸發(fā)拒絕策略時(shí),在嘗試一分鐘的時(shí)間重新將任務(wù)塞進(jìn)任務(wù)隊(duì)列,當(dāng)一分鐘超時(shí)還沒(méi)成功時(shí),就拋出異常

pinpoint中的線程池拒絕策略

  1. public class RejectedExecutionHandlerChain implements RejectedExecutionHandler { 
  2.  private final RejectedExecutionHandler[] handlerChain; 
  3.  public static RejectedExecutionHandler build(List<RejectedExecutionHandler> chain) { 
  4.  Objects.requireNonNull(chain, "handlerChain must not be null"); 
  5.  RejectedExecutionHandler[] handlerChain = chain.toArray(new RejectedExecutionHandler[0]); 
  6.  return new RejectedExecutionHandlerChain(handlerChain); 
  7.  } 
  8.  private RejectedExecutionHandlerChain(RejectedExecutionHandler[] handlerChain) { 
  9.  this.handlerChain = Objects.requireNonNull(handlerChain, "handlerChain must not be null"); 
  10.  } 
  11.  @Override 
  12.  public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { 
  13.  for (RejectedExecutionHandler rejectedExecutionHandler : handlerChain) { 
  14.  rejectedExecutionHandler.rejectedExecution(r, executor); 
  15.  } 
  16.  } 

 

pinpoint的拒絕策略實(shí)現(xiàn)很有特點(diǎn),和其他的實(shí)現(xiàn)都不同。他定義了一個(gè)拒絕策略鏈,包裝了一個(gè)拒絕策略列表,當(dāng)觸發(fā)拒絕策略時(shí),會(huì)將策略鏈中的rejectedExecution依次執(zhí)行一遍

結(jié)語(yǔ)

前文從線程池設(shè)計(jì)思想,以及線程池觸發(fā)拒絕策略的時(shí)機(jī)引出java線程池拒絕策略接口的定義。并輔以JDK內(nèi)置4種以及四個(gè)第三方開(kāi)源軟件的拒絕策略定義描述了線程池拒絕策略實(shí)現(xiàn)的各種思路和使用場(chǎng)景。希望閱讀此文后能讓你對(duì)java線程池拒絕策略有更加深刻的認(rèn)識(shí),能夠根據(jù)不同的使用場(chǎng)景更加靈活的應(yīng)用。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2020-11-25 11:33:47

Java線程技術(shù)

2020-02-18 14:25:51

Java線程池拒絕策略

2024-10-09 15:58:02

2025-09-24 18:39:45

2020-12-10 08:24:40

線程池線程方法

2015-10-10 09:39:42

Java線程池源碼解析

2021-09-11 07:32:15

Java線程線程池

2020-02-11 17:15:09

開(kāi)發(fā)者拋棄 Executors

2024-11-11 17:27:45

2022-03-14 07:32:06

線程池拒絕策略自定義

2020-12-08 08:53:53

編程ThreadPoolE線程池

2024-04-26 00:00:02

Java線程池策略

2023-08-15 15:33:29

線程池線程數(shù)

2009-08-19 10:34:16

反爬蟲(chóng)

2022-03-22 09:20:57

應(yīng)用線程池技術(shù)

2009-07-09 10:28:19

線程池JDK5

2009-07-22 09:39:18

CLR線程池

2025-03-05 10:34:56

2024-01-08 09:09:40

線程池異常黑洞Futrue

2023-03-10 15:31:45

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕一区二区三区人妻电影| 欧美色道久久88综合亚洲精品| 日本中文字幕影院| 99精品国产热久久91蜜凸| 国产高清不卡无码视频| 99精品视频在线免费观看| 欧美黄色小说| 精品国产一区二区三区在线观看| 国产直播在线| 日韩精品第1页| 国产精品久久久久久久久免费桃花| 韩国av永久免费| 国产欧美精品在线播放| 羞羞视频在线观看欧美| 国产精彩视频在线观看| 久久99国产综合精品女同| 欧美国产一级| 91麻豆精品久久毛片一级| 亚洲新中文字幕| 亚洲警察之高压线| 亚洲观看黄色网| 亚洲国产成人av在线| 欧美日韩三级电影在线| 日韩欧美一区三区| 黑人精品欧美一区二区蜜桃| 90岁老太婆乱淫| 一区二区亚洲精品国产| 日本在线一区二区三区| 久久久久狠狠高潮亚洲精品| 亚洲自拍与偷拍| 国产三级电影在线观看| 粉嫩精品一区二区三区在线观看| 激情综合网最新| 在线a人片免费观看视频| 欧美lavv| 国产精品久线观看视频| 肉体视频在线| 少妇大叫太大太粗太爽了a片小说| 欧美国产一区二区在线观看| 色哟哟在线观看| 日韩.欧美.亚洲| 91小视频免费看| 欧美91精品久久久久国产性生爱| 国产91在线亚洲| 91尤物视频在线观看| 超碰在线观看av| 国产91久久婷婷一区二区| 亚洲色图网站| 偷拍夫妻性生活| 欧美一区在线直播| 国产女优一区| 久久久综合久久| 欧美综合第一页| 91久久久久| 亚洲欧美日韩综合在线| 久久99久久99精品| 亚洲福利视频专区| 天堂在线一区二区| 国产裸体无遮挡| 999久久久| 久久综合久久久久88| 99热国产在线| 国产亚洲无码精品| 久久精品99无色码中文字幕 | 日韩欧美在线播放| 香蕉av一区二区| 国产真实乱人偷精品视频| 久久久99爱| 亚洲精品视频在线看| 亚洲精品国模| 乱精品一区字幕二区| 99爱视频在线| 午夜精品美女自拍福到在线| 国产麻豆日韩欧美久久| 91大神xh98hx在线播放| 制服丝袜中文字幕第一页 | 欧美美乳视频网站在线观看| 欧美日韩亚洲综合在线| 亚洲久久视频| 精品孕妇一区二区三区| 大香煮伊手机一区| 国内揄拍国内精品少妇国语| 激情久久五月天| 在线观看的黄色| 久久精品久久精品久久| 日本一级淫片演员| 欧美日韩久久不卡| 国产精品午夜一区二区三区| 国产一级性生活| 国产 国语对白 露脸 | 狠狠狠综合7777久夜色撩人| 中文字幕精品久久久| 欧美另类在线播放| 国产精品久久久久久久裸模| 日韩夫妻性生活xx| 国产又大又黄又粗| 黑人另类av| 亚洲成av人片一区二区梦乃| 91精品久久久久久综合五月天| 北京富婆泄欲对白| 欧美精品欧美精品系列c| 国产亚洲精品美女| 国产女人aaa级久久久级 | 致1999电视剧免费观看策驰影院| 亚洲精品乱码久久久久久金桔影视 | 日本高清视频网站| 偷拍女澡堂一区二区三区| 亚洲在线欧美| 7777精品伊人久久久大香线蕉最新版 | 久久久久99人妻一区二区三区| 在线免费一区三区| 国产精品白丝jk黑袜喷水| 99re热精品视频| 毛片在线免费视频| 久久精品人人做人人爽电影| 精品网站999www| 国产日本一区二区| 午夜精品国产| 无码精品一区二区三区在线| 成人精品一二三区| 欧美视频在线观看网站| 中文字幕亚洲一区在线观看| 亚洲伦在线观看| 久久蜜桃精品| 一区二区亚洲视频| 日本在线视频中文有码| 一级二级三级视频| 99草草国产熟女视频在线| 亚洲精品免费一区二区三区| 欧美性xxxxxx少妇| 99久久99久久精品国产片果冻| 亚洲美女视频| 色婷婷成人网| 日本高清在线观看wwwww色| 亚洲无码精品国产| 欧美一区免费观看| 波多野结衣在线免费观看| 日本久久久久久| 日韩精品免费在线观看| 性久久久久久久久久久久| 99国产精品99久久久久久| 老鸭窝亚洲一区二区三区| 精品国产91乱码一区二区三区四区 | 91久久香蕉国产日韩欧美9色| 久久久精品国产免费观看同学| 久久综合伊人| 成人写真视频| 影院在线观看全集免费观看| 精品人妻一区二区三区潮喷在线| 国产精品-区区久久久狼| 亚洲一区二区三区乱码| 91影视免费在线观看| 欧美成人午夜激情| 亚洲18女电影在线观看| 久久日一线二线三线suv| 麻豆久久久久久| 亚洲精品婷婷| 日本久久黄色| 久久九九精品视频| 熟妇人妻中文av无码| 三级黄色片在线观看| 日韩精品国产一区| 国产视频在线视频| 欧美一区二区中文字幕| 在线观看日韩羞羞视频| 欧洲精品在线一区| 国精产品99永久一区一区| 91色视频在线导航| 国产精品网红福利| 欧美在线影院一区二区| av一二三不卡影片| 国产一区二区三区久久久 | 好吊日视频在线观看| 成年人在线观看| 色就是色亚洲色图| 少妇人妻偷人精品一区二区| 隣の若妻さん波多野结衣| 天天操天天干天天舔| 日本大臀精品| 国产二区视频在线观看| 国产视频网站在线| 欧美一区二区三区在线观看免费| 黄网站在线免费| 狠狠狠综合7777久夜色撩人| 婷婷丁香一区二区三区| 亚洲男人天堂久久| 国产精品怡红院| www.国产麻豆| 性感美女视频一二三| 天堂网在线观看视频| 男女av在线| 91精彩视频在线播放| av网址在线看| 99热这里精品| 日本午夜视频在线观看| 伊人中文字幕在线观看 | 精品免费99久久| 欧美日韩中文在线观看| 欧美日韩精品电影| 亚洲精品一区二区三区精华液| 中文字幕免费国产精品| 欧美激情按摩在线| 国产精品日韩欧美大师| 欧美日韩成人网| 国产国语刺激对白av不卡| 国产在线一区二| 欧美性受xxxx黑人猛交88| caoporn超碰97| 性感美女一区二区三区| 色屁屁草草影院ccyy.com| 6080国产精品| 一级片手机在线观看| av最新在线观看| 三叶草欧洲码在线| av黄色一级片| 老湿机69福利| 天天看天天摸天天操| 色av性av丰满av| 天天综合永久入口| 2019中文字幕在线电影免费| 国产中文字幕在线| a√中文在线观看| 日韩精品中文字幕吗一区二区| 久久久久亚洲| 蜜桃久久精品一区二区| 国产一区二区三区蝌蚪| 亚洲欧美aⅴ...| 亚洲精品久久久久久久久久久| 亚洲色在线视频| 成人97在线观看视频| 国产精品一区二区欧美黑人喷潮水| 中文字幕精品在线播放| 五月婷婷六月丁香激情| 7788色淫网站小说| 久久久久久少妇| 少妇激情av一区二区| 福利影院在线看| 国产精品一区2区3区| 一区二区精品伦理...| 免费毛片b在线观看| 成av人片在线观看www| 成人台湾亚洲精品一区二区 | 国产精品嫩草99a| 欧美日韩免费在线视频| 欧美二区在线播放| 精品久久久久久综合日本| 自拍日韩亚洲一区在线| 午夜一区二区三区免费| 天天爱天天做天天爽| 久热国产在线| 神马久久影院| 99成人超碰| 91网站在线观看视频| 欧美日韩亚洲国产综合| 91福利视频网| 99在线观看视频| 亚洲一区精品视频| 无码人妻一区二区三区在线| 天堂免费在线视频| 国产偷倩在线播放| 亚洲日本免费电影| 人禽交欧美网站| 欧洲另类一二三四区| 午夜精品福利在线观看| 国产一二三四五| 欧美成人精品一区二区免费看片 | xx欧美撒尿嘘撒尿xx| 中文字幕亚洲乱码熟女1区2区| 在线中文免费视频| 欧美1区2区视频| 亚洲国产另类精品专区| 午夜精品久久久久久久男人的天堂 | 日本在线不卡一区| 欧美日韩日本国产| 亚洲偷熟乱区亚洲香蕉av| 久久久久久99| 中文字幕a在线观看| 日本黄视频在线观看| 久久99精品久久久久久欧洲站| 国产精品白丝av| 欧美精品一区二区三区四区| 国产高清在线一区| 国产精品久久AV无码| 在线观看日本中文字幕| 成年人午夜视频| wwwww亚洲| 亚洲专区免费| 欧美日韩情趣电影| 成人性生交xxxxx网站| 91网址在线播放| а√天堂资源在线| 亚洲人和日本人hd| 亚洲欧美自拍偷拍色图| 7777精品伊人久久久大香线蕉超级流畅| 高清视频一区二区三区| 小泽玛利亚一区二区免费| 午夜成年人在线免费视频| 亚洲精品91| 日韩欧美中文第一页| 亚洲最大福利网站| 成人乱码一区二区三区av| av小次郎在线| 秋霞电影网一区二区| 日韩成人在线观看| 热这里只有精品| 亚洲男人的天堂在线视频| 美女久久久久久| 国产日韩欧美综合一区| 欧美一区二区三区四区在线| 完美搭档在线观看| 1024在线播放| 国产精品99久久久| 日韩一级高清毛片| 香蕉视频在线网址| 国产乱淫a∨片免费视频| 亚洲精品一二三区区别| 3d成人动漫网站| 欧美日韩中文字幕在线播放| 国产精品一级视频| 亚州av乱码久久精品蜜桃| 欧美日韩情趣电影| 日韩性感在线| 无码无套少妇毛多18pxxxx| 欧美巨大xxxx| 欧美性xxxx极品高清hd直播 | 日韩精品视频三区| 日日碰狠狠躁久久躁婷婷| 水莓100在线视频| 麻豆91在线看| 久久躁狠狠躁夜夜爽| 亚洲av成人精品一区二区三区| 香蕉成人app免费看片| 国产成人综合自拍| 久久久久久成人| 久久人人爽人人爽人人片| 日韩一区二区三区免费| 91丨porny丨在线| 国产精品国模在线| 懂色av.com| 国产精品一区二区三区av麻| 日韩欧美在线一区| 亚洲午夜在线观看| 亚洲AV无码精品色毛片浪潮| 夜久久久久久| 91久久久免费一区二区| 日韩av一级大片| 国产黄色av网站| 日韩成人午夜电影| 久久久在线视频| 波多野结衣久久久久| 久久激情av| 91精品欧美久久久久久动漫| 看av免费毛片手机播放| 中文字幕有码在线观看| 国产亚洲欧美日韩日本| 国产二区一区| 国产伦精品一区二区三区免.费| 亚洲国产专区校园欧美| 久久精品亚洲精品| 欧美 日韩 成人| 午夜精品福利影院| 欧美成人aa大片| 日本久久久久久久久久| 成人性生交大片免费看中文视频| 日韩一区二区免费在线电影| 91高清国产视频| 国语精品视频| 日韩一区二区免费电影| 日本黄大片一区二区三区| 2022成人影院| 欧美日韩国产区| 99视频在线免费播放| av资源在线播放| 色哟哟一区二区| 日韩欧美视频网站| 在线观看网站免费入口在线观看国内 | 亚洲欧美日韩高清| 国产乱淫av麻豆国产免费| 日韩午夜电影免费看| 3751色影院一区二区三区| 黄色片子免费看| 日韩极品在线| 亚洲天堂影视av| 少妇久久久久久被弄高潮| 亚洲性视频h| 日本三级韩国三级久久| 999久久久久| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩精品免费观看视一区二区| 手机看片一区二区三区| 久久综合狠狠综合久久激情| 亚洲7777| 午夜精品一二三区| 大陆成人av片| 国产福利成人在线| 一个人看的www日本高清视频| 国产成人精品三级| 欧美亚洲另类久久综合| 国产传媒在线播放| 日本韩国一区二区三区视频|