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

3分鐘帶你搞定Spring Boot中Schedule

開發 前端
實際的業務開發過程中,我們經常會需要定時任務來幫助我們完成一些工作,例如每天早上 6 點生成銷售報表、每晚 23 點清理臟數據等等。

[[358511]]

 本文轉載自微信公眾號「Java極客技術」,作者鴨血粉絲。轉載本文請聯系Java極客技術公眾號。

一、摘要

閱讀完本文大概需要3分鐘,本文主要分享內容如下:

  • SpringBoot Schedule 實踐介紹

二、介紹

在實際的業務開發過程中,我們經常會需要定時任務來幫助我們完成一些工作,例如每天早上 6 點生成銷售報表、每晚 23 點清理臟數據等等。

如果你當前使用的是 SpringBoot 來開發項目,那么完成這些任務會非常容易!

SpringBoot 默認已經幫我們完成了相關定時任務組件的配置,我們只需要添加相應的注解@Scheduled就可以實現任務調度!

三、Schedule 實踐

3.1、pom 包配置

pom包里面只需要引入Spring Boot Starter包即可!

  1. <dependencies> 
  2.     <!--spring boot核心--> 
  3.     <dependency> 
  4.         <groupId>org.springframework.boot</groupId> 
  5.         <artifactId>spring-boot-starter</artifactId> 
  6.     </dependency> 
  7.     <!--spring boot 測試--> 
  8.     <dependency> 
  9.         <groupId>org.springframework.boot</groupId> 
  10.         <artifactId>spring-boot-starter-test</artifactId> 
  11.         <scope>test</scope> 
  12.     </dependency> 
  13. </dependencies> 

3.2、啟動類啟用定時調度

在啟動類上面加上@EnableScheduling即可開啟定時

  1. @SpringBootApplication 
  2. @EnableScheduling 
  3. public class ScheduleApplication { 
  4.  
  5.     public static void main(String[] args) { 
  6.         SpringApplication.run(ScheduleApplication.class, args); 
  7.     } 

3.3、創建定時任務

Spring Scheduler支持四種形式的任務調度!

  • fixedRate:固定速率執行,例如每5秒執行一次
  • fixedDelay:固定延遲執行,例如距離上一次調用成功后2秒執行
  • initialDelay:初始延遲任務,例如任務開啟過5秒后再執行,之后以固定頻率或者間隔執行
  • cron:使用 Cron 表達式執行定時任務

3.3.1、固定速率執行

你可以通過使用fixedRate參數以固定時間間隔來執行任務,示例如下:

  1. @Component 
  2. public class SchedulerTask { 
  3.  
  4.     private static final Logger log = LoggerFactory.getLogger(SchedulerTask.class); 
  5.     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  6.  
  7.     /** 
  8.   * fixedRate:固定速率執行。每5秒執行一次。 
  9.   */ 
  10.  @Scheduled(fixedRate = 5000) 
  11.  public void runWithFixedRate() { 
  12.      log.info("Fixed Rate Task,Current Thread : {},The time is now : {}", Thread.currentThread().getName(), dateFormat.format(new Date())); 
  13.  } 

運行ScheduleApplication主程序,即可看到控制臺輸出效果:

  1. Fixed Rate Task,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:00 
  2. Fixed Rate Task,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:10 
  3. ... 

3.3.2、固定延遲執行

你可以通過使用fixedDelay參數來設置上一次任務調用完成與下一次任務調用開始之間的延遲時間,示例如下:

  1. @Component 
  2. public class SchedulerTask { 
  3.  
  4.     private static final Logger log = LoggerFactory.getLogger(SchedulerTask.class); 
  5.     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  6.  
  7.     /** 
  8.      * fixedDelay:固定延遲執行。距離上一次調用成功后2秒后再執行。 
  9.      */ 
  10.     @Scheduled(fixedDelay = 2000) 
  11.     public void runWithFixedDelay() { 
  12.         log.info("Fixed Delay Task,Current Thread : {},The time is now : {}", Thread.currentThread().getName(), dateFormat.format(new Date())); 
  13.     } 

控制臺輸出效果:

  1. Fixed Delay Task,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:00 
  2. Fixed Delay Task,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:02 
  3. ... 

3.3.3、初始延遲任務

你可以通過使用initialDelay參數與fixedRate或者fixedDelay搭配使用來實現初始延遲任務調度。

  1. @Component 
  2. public class SchedulerTask { 
  3.  
  4.     private static final Logger log = LoggerFactory.getLogger(SchedulerTask.class); 
  5.     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  6.  
  7.  /** 
  8.      * initialDelay:初始延遲。任務的第一次執行將延遲5秒,然后將以5秒的固定間隔執行。 
  9.      */ 
  10.     @Scheduled(initialDelay = 5000, fixedRate = 5000) 
  11.     public void reportCurrentTimeWithInitialDelay() { 
  12.         log.info("Fixed Rate Task with Initial Delay,Current Thread : {},The time is now : {}", Thread.currentThread().getName(), dateFormat.format(new Date())); 
  13.     } 

控制臺輸出效果:

  1. Fixed Rate Task with Initial Delay,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:05 
  2. Fixed Rate Task with Initial Delay,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:10 
  3. ... 

3.3.4、使用 Cron 表達式

Spring Scheduler同樣支持Cron表達式,如果以上簡單參數都不能滿足現有的需求,可以使用 cron 表達式來定時執行任務。

關于cron表達式的具體用法,可以點擊參考這里:https://cron.qqe2.com/

  1. @Component 
  2. public class SchedulerTask { 
  3.  
  4.     private static final Logger log = LoggerFactory.getLogger(SchedulerTask.class); 
  5.     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  6.  
  7.     /** 
  8.      * cron:使用Cron表達式。每6秒中執行一次 
  9.      */ 
  10.     @Scheduled(cron = "*/6 * * * * ?"
  11.     public void reportCurrentTimeWithCronExpression() { 
  12.         log.info("Cron Expression,Current Thread : {},The time is now : {}", Thread.currentThread().getName(), dateFormat.format(new Date())); 
  13.     } 

控制臺輸出效果:

  1. Cron Expression,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:06 
  2. Cron Expression,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 11:46:12 
  3. ... 

3.4、異步執行定時任務

在介紹異步執行定時任務之前,我們先看一個例子!

在下面的示例中,我們創建了一個每隔2秒執行一次的定時任務,在任務里面大概需要花費 3 秒鐘,猜猜執行結果如何?

  1. @Component 
  2. public class AsyncScheduledTask { 
  3.  
  4.     private static final Logger log = LoggerFactory.getLogger(AsyncScheduledTask.class); 
  5.     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  6.  
  7.     @Scheduled(fixedRate = 2000) 
  8.     public void runWithFixedDelay() { 
  9.         try { 
  10.             TimeUnit.SECONDS.sleep(3); 
  11.             log.info("Fixed Delay Task, Current Thread : {} : The time is now {}", Thread.currentThread().getName(), dateFormat.format(new Date())); 
  12.         } catch (InterruptedException e) { 
  13.             log.error("錯誤信息",e); 
  14.         } 
  15.     } 

控制臺輸入結果:

  1. Fixed Delay Task, Current Thread : scheduling-1 : The time is now 2020-12-15 17:55:26 
  2. Fixed Delay Task, Current Thread : scheduling-1 : The time is now 2020-12-15 17:55:31 
  3. Fixed Delay Task, Current Thread : scheduling-1 : The time is now 2020-12-15 17:55:36 
  4. Fixed Delay Task, Current Thread : scheduling-1 : The time is now 2020-12-15 17:55:41 
  5. ... 

很清晰的看到,任務調度頻率變成了每隔5秒調度一次!

這是為啥呢?

從Current Thread : scheduling-1輸出結果可以很看到,任務執行都是同一個線程!默認的情況下,@Scheduled任務都在 Spring 創建的大小為 1 的默認線程池中執行!

更直觀的結果是,任務都是串行執行!

下面,我們將其改成異步線程來執行,看看效果如何?

  1. @Component 
  2. @EnableAsync 
  3. public class AsyncScheduledTask { 
  4.  
  5.     private static final Logger log = LoggerFactory.getLogger(AsyncScheduledTask.class); 
  6.     private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  7.  
  8.  
  9.     @Async 
  10.     @Scheduled(fixedDelay = 2000) 
  11.     public void runWithFixedDelay() { 
  12.         try { 
  13.             TimeUnit.SECONDS.sleep(3); 
  14.             log.info("Fixed Delay Task, Current Thread : {} : The time is now {}", Thread.currentThread().getName(), dateFormat.format(new Date())); 
  15.         } catch (InterruptedException e) { 
  16.             log.error("錯誤信息",e); 
  17.         } 
  18.     } 

控制臺輸出結果:

  1. Fixed Delay Task, Current Thread : SimpleAsyncTaskExecutor-1 : The time is now 2020-12-15 18:55:26 
  2. Fixed Delay Task, Current Thread : SimpleAsyncTaskExecutor-2 : The time is now 2020-12-15 18:55:28 
  3. Fixed Delay Task, Current Thread : SimpleAsyncTaskExecutor-3 : The time is now 2020-12-15 18:55:30 
  4. ... 

任務的執行頻率不受方法內的時間影響,以并行方式執行!

3.5、自定義任務線程池

雖然默認的情況下,@Scheduled任務都在 Spring 創建的大小為 1 的默認線程池中執行,但是我們也可以自定義線程池,只需要實現SchedulingConfigurer類即可!

自定義線程池示例如下:

  1. @Configuration 
  2. public class SchedulerConfig implements SchedulingConfigurer { 
  3.  
  4.     @Override 
  5.     public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { 
  6.         ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); 
  7.         //線程池大小為10 
  8.         threadPoolTaskScheduler.setPoolSize(10); 
  9.         //設置線程名稱前綴 
  10.         threadPoolTaskScheduler.setThreadNamePrefix("scheduled-thread-"); 
  11.         //設置線程池關閉的時候等待所有任務都完成再繼續銷毀其他的Bean 
  12.         threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true); 
  13.         //設置線程池中任務的等待時間,如果超過這個時候還沒有銷毀就強制銷毀,以確保應用最后能夠被關閉,而不是阻塞住 
  14.         threadPoolTaskScheduler.setAwaitTerminationSeconds(60); 
  15.         //這里采用了CallerRunsPolicy策略,當線程池沒有處理能力的時候,該策略會直接在 execute 方法的調用線程中運行被拒絕的任務;如果執行程序已關閉,則會丟棄該任務 
  16.         threadPoolTaskScheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); 
  17.         threadPoolTaskScheduler.initialize(); 
  18.  
  19.         scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler); 
  20.     } 

我們啟動服務,看看cron任務示例調度效果:

  1. Cron Expression,Current Thread : scheduled-thread-1,The time is now : 2020-12-15 20:46:00 
  2. Cron Expression,Current Thread : scheduled-thread-2,The time is now : 2020-12-15 20:46:06 
  3. Cron Expression,Current Thread : scheduled-thread-3,The time is now : 2020-12-15 20:46:12 
  4. Cron Expression,Current Thread : scheduled-thread-4,The time is now : 2020-12-15 20:46:18 
  5. .... 

當前線程名稱已經被改成自定義scheduled-thread的前綴!

四、小結

本文主要圍繞Spring scheduled應用實踐進行分享,如果是單體應用,使用SpringBoot內置的@scheduled注解可以解決大部分業務需求,上手非常容易!

五、參考

1、SpringBoot @Schedule使用與原理分析

原文鏈接:https://mp.weixin.qq.com/s/7J1tlZab2oE-6cm6GZiU_w

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2021-06-18 07:34:12

Kafka中間件微服務

2020-09-14 11:30:26

HTTP3運維互聯網

2022-02-16 19:42:25

Spring配置開發

2011-05-26 09:03:17

JSONjavascript

2010-03-05 17:28:08

2013-06-24 15:32:41

JPush極光推送Android Pus移動開發

2017-08-10 13:13:44

Linux正則表達式

2025-03-13 06:22:59

2022-06-17 08:05:28

Grafana監控儀表盤系統

2021-12-02 06:58:03

AIOps通信服務

2021-12-01 06:50:50

Docker底層原理

2021-10-19 07:27:08

HTTP代理網絡

2023-10-09 16:35:19

方案Spring支付

2020-10-13 18:22:58

DevOps工具開發

2024-12-13 15:29:57

SpringSpringBeanJava

2019-11-22 11:10:26

區塊鏈技術

2021-08-03 17:00:25

Spring Boot代碼Java

2025-03-18 09:20:00

Go語言Golang

2009-11-26 11:19:52

NIS服務器

2020-11-23 16:23:59

CSS設計技術
點贊
收藏

51CTO技術棧公眾號

久久无码高潮喷水| 91在线无精精品一区二区| 国产人妻黑人一区二区三区| 久久男人av资源站| 国产午夜精品在线观看| 国产免费一区视频观看免费| 欧美国产日韩在线观看成人| 欧美91在线| 欧美在线看片a免费观看| 男同互操gay射视频在线看| 日韩一级免费视频| 奇米色一区二区| 欧美激情精品久久久久久久变态| 亚洲精品女人久久久| 欧美黄色成人| 精品久久久久久电影| 亚洲精品国产一区| 天天摸天天干天天操| 蜜臀av一区二区在线免费观看| 九九精品视频在线| 国产探花视频在线播放| 精品淫伦v久久水蜜桃| 欧美视频在线一区二区三区| 欧美激情视频免费看| 一区二区三区视频在线观看视频| 国产一本一道久久香蕉| 日韩av高清不卡| 久草视频免费在线| 日韩欧美在线中字| 亚洲毛片在线观看.| 美女日批在线观看| 中文字幕综合| 在线观看精品一区| 免费观看日韩毛片| missav|免费高清av在线看| 一区免费观看视频| 午夜精品亚洲一区二区三区嫩草 | 日韩欧美一区二区在线| 国产又粗又长又爽视频| 成人精品福利| 久久人人97超碰com| www.久久久| 国产精品天天操| 久久精品国产一区二区三| 奇门遁甲1982国语版免费观看高清| 永久久久久久久| 99久久久久久中文字幕一区| 在线国产精品视频| 欧美黄色激情视频| 国产精品嫩草影院在线看| 精品网站999www| 日本一区二区在线免费观看| 大奶在线精品| 欧美一区二区精美| 久久久精品视频国产| 国产乱子精品一区二区在线观看| 在线日韩一区二区| 日韩av播放器| 欧美色片在线观看| 欧美在线高清视频| 中文字幕在线综合| 欧美综合影院| 欧美高清dvd| 免费高清视频在线观看| 日韩精品一区国产| 精品国产乱码久久久久久久| 中文字幕第九页| 全国精品免费看| 亚洲美女在线看| 精品无码国产污污污免费网站| 国产在线观看91一区二区三区 | 91久久综合| 国产69久久精品成人| 亚洲欧美偷拍视频| 奇米四色…亚洲| 亚洲一区亚洲二区| 色窝窝无码一区二区三区| 91麻豆国产香蕉久久精品| 欧美一级二级三级九九九| 噜噜噜在线观看播放视频| 国产亚洲污的网站| 在线视频一区观看| 超清av在线| 日本韩国视频一区二区| 日本黄色福利视频| 91国内精品| 日韩经典第一页| 五月天精品在线| 综合av在线| 78色国产精品| 91精品国自产| av不卡免费电影| 亚洲精品一区二区三区av| www免费视频观看在线| 午夜亚洲国产au精品一区二区| 粗暴91大变态调教| 久久久久久亚洲精品美女| 亚洲黄色www网站| 蜜桃av免费观看| 国模吧视频一区| 国产精品福利久久久| av网站在线免费看| 91丨porny丨最新| 中文字幕一区综合| 小视频免费在线观看| 欧美精品99久久久**| 日韩成人av一区二区| 婷婷综合五月| 国产99久久精品一区二区永久免费| 99精品视频在线播放免费| 久久久久久久久99精品| 国产激情在线看| avav成人| 精品亚洲va在线va天堂资源站| 91视频青青草| 视频一区国产视频| 国产在线一区二区三区欧美| 国产日产一区二区三区| 色成年激情久久综合| 69亚洲乱人伦| 亚洲欧美偷拍自拍| 国产精品久久久久久久美男| 日本美女一级视频| 一级中文字幕一区二区| 性生活免费在线观看| 亚洲丝袜啪啪| 97久久超碰福利国产精品…| av av片在线看| 国产精品嫩草99a| av动漫在线观看| 成人福利一区| 精品综合久久久久久97| 91精品国自产| 国产精品国产三级国产普通话蜜臀| 欧美韩国日本在线| 开心激情综合| 欧美精品成人在线| 国产ts人妖调教重口男| 18成人在线观看| 免费涩涩18网站入口| 国产精品亚洲二区| 欧美有码在线视频| 神马久久精品| 福利微拍一区二区| 国产精品1000部啪视频| 狠狠色综合网| 国产精品一区二区三区观看| 日本天码aⅴ片在线电影网站| 欧美高清视频在线高清观看mv色露露十八| 四虎成人免费影院| 美女脱光内衣内裤视频久久网站| 日韩成人在线资源| 99亚洲伊人久久精品影院| 国产亚洲欧美aaaa| 波多野结衣黄色网址| 国产亚洲va综合人人澡精品| 免费男同深夜夜行网站| 激情婷婷综合| 国产精品视频区| 午夜激情在线观看| 7799精品视频| 久久久精品人妻一区二区三区四 | 国产精品边吃奶边做爽| 黄色片在线免费| av综合网站| 91av视频在线免费观看| 亚洲色图另类小说| 欧美日韩在线观看视频| 国产成人无码精品久久二区三| 久久亚洲图片| 影音先锋欧美在线| 免费观看性欧美大片无片| 欧美激情综合色| 污视频在线免费观看| 色婷婷久久综合| 日韩在线观看免| 成人午夜电影网站| 一本久道综合色婷婷五月| 成人在线电影在线观看视频| 91在线高清视频| f2c人成在线观看免费视频| 亚洲欧美精品在线| 亚洲视频在线观看一区二区| 亚洲乱码中文字幕综合| 免费看91视频| 久久国产免费| 中文字幕乱码一区二区三区| 亚洲**毛片| 日本午夜在线亚洲.国产| 免费黄色网址在线观看| 日韩视频一区二区在线观看| 欧美福利视频一区二区| 国产人成一区二区三区影院| 日本女人黄色片| 天堂蜜桃91精品| 亚洲欧美日韩另类精品一区二区三区| 国产一区二区三区亚洲综合 | 欧美尤物一区| 国产麻豆一区二区三区| 91精品国产91久久久久久| 1769视频在线播放免费观看| 精品黑人一区二区三区久久| 国产裸体美女永久免费无遮挡| 一区二区三区国产豹纹内裤在线| 欧洲女同同性吃奶| 国产成人精品亚洲777人妖| 日韩欧美xxxx| 亚洲黄色成人| 超碰免费在线公开| 一区二区小说| 成人永久免费| 亚州精品国产| 国产成人极品视频| 黄色羞羞视频在线观看| 北条麻妃在线一区二区| 免费动漫网站在线观看| 欧美成人在线直播| 欧美日韩 一区二区三区| 亚洲成人一区在线| 人人澡人人澡人人看| 久久精品欧美日韩精品| 三级视频网站在线观看| 国产伦精一区二区三区| 中文字幕第36页| 亚洲欧美日韩精品一区二区| 蜜臀av性久久久久蜜臀av| 清纯唯美亚洲综合一区| 奇米视频888战线精品播放| 国产精品x8x8一区二区| 波多野结衣成人在线| 欧美一区=区三区| 国产成人精品一区| 日本乱码一区二区三区不卡| 欧美俄罗斯性视频| 国产精品刘玥久久一区| 色婷婷综合成人| 国产免费永久在线观看| 国产视频一区在线| 天堂在线视频观看| 日韩午夜激情视频| 精品人妻午夜一区二区三区四区| 欧美精品一卡二卡| 中文字幕人妻一区二区三区视频| 色综合一个色综合| 亚洲欧美精品一区二区三区| 精品福利一区二区| 日韩特黄一级片| 亚洲成人动漫av| www.天天色| 亚洲成年人网站在线观看| 精品99久久久久成人网站免费| 亚洲精品伦理在线| 精品午夜福利视频| 亚洲成人av在线电影| 日本视频www| 婷婷一区二区三区| 九九热在线免费观看| 色婷婷综合久色| www.av88| 91麻豆精品91久久久久久清纯 | 精品久久久三级丝袜| 亚洲av综合色区无码一区爱av | 水莓100在线视频| 亚洲人成在线播放| 国产69久久| 精品国产欧美一区二区三区成人| free性欧美hd另类精品| 欧美国产高跟鞋裸体秀xxxhd| 美女尤物在线视频| …久久精品99久久香蕉国产| 欧美xxx视频| 国产精品美女视频网站| 四虎永久精品在线| 99久久久精品免费观看国产| 老司机aⅴ在线精品导航| 免费99视频| 欧美激情电影| cao在线观看| 丝袜美腿亚洲一区二区图片| 亚洲一区日韩精品| 成人永久aaa| 午夜理伦三级做爰电影| 亚洲视频在线观看一区| 日韩乱码人妻无码中文字幕| 日本精品一级二级| 精品久久久久久亚洲综合网站| 日韩国产精品一区| 日韩毛片久久久| 午夜精品福利电影| 99riav视频一区二区| 成人综合色站| 国产亚洲一区二区三区不卡| 精品无码av无码免费专区| 销魂美女一区二区三区视频在线| 中文字幕66页| 99久久伊人网影院| 国产一区二区精彩视频| 激情成人在线视频| 97人妻精品一区二区三区视频| 亚洲电影在线观看| 最新国产在线观看| 2019中文字幕在线| 亚洲一区二区三区久久久| 精品国产福利| 一区二区三区午夜探花| 99久久国产宗和精品1上映| 国产麻豆成人精品| 亚洲精品视频网址| 婷婷一区二区三区| 国产黄色av片| 最好看的2019年中文视频| 国模私拍一区二区国模曼安| 亚洲综合一区二区不卡| 欧美一区二区三| 九色在线视频观看| 国产精品亚洲成人| 日本猛少妇色xxxxx免费网站| 亚洲高清视频的网址| 国产特级aaaaaa大片| 尤物yw午夜国产精品视频| 午夜欧美激情| 国模精品一区二区三区| 欧美影院一区| 欧美成人三级在线播放| 久久奇米777| 奇米影视第四色777| 精品久久人人做人人爰| 在线黄色网页| 成人在线观看视频网站| 欧美一区电影| 亚洲视频在线a| 久久久亚洲精品一区二区三区| 日本少妇激情舌吻| 精品国产伦一区二区三区观看体验| 精品黄色免费中文电影在线播放| 国产精品高潮呻吟视频| 深夜福利久久| 亚洲国产精品久久久久婷蜜芽| 成人av在线一区二区| 久久久久久久福利| 日韩美女视频一区二区在线观看| 久久77777| 91色精品视频在线| 午夜免费一区| 天天久久综合网| 亚洲精品视频一区二区| 精品人妻一区二区三区换脸明星 | 久久久久成人网站| 日韩一区二区三区观看| 高清全集视频免费在线| 91在线观看免费| 欧美日韩 国产精品| 丰满少妇一区二区三区专区| 樱花影视一区二区| 亚洲精品一区二区三区四区| 欧美国产精品日韩| 成人av综合网| 男人日女人下面视频| 91首页免费视频| 蜜臀精品一区二区三区| 亚洲午夜女主播在线直播| 欧美与亚洲与日本直播| 性欧美精品一区二区三区在线播放| 日韩国产欧美在线观看| 人妻互换一区二区激情偷拍| 91精品一区二区三区久久久久久| av大片在线| 国产精品一区二区三区在线| 亚洲少妇诱惑| ass极品国模人体欣赏| 欧美一区二区三区免费大片 | 青草青草久热精品视频在线网站 | 一本大道东京热无码aⅴ| 粉嫩欧美一区二区三区高清影视| 懂色av.com| 国产亚洲人成a一在线v站| 亚洲日本中文| 国产高清av在线播放| 久久嫩草精品久久久精品| 亚洲天堂一二三| 久久露脸国产精品| 男人天堂av电影| 亚洲一区二区免费看| 波多野结衣一本| 欧美日韩国产精品自在自线| 日本片在线观看| 欧美国产视频在线观看| 久久国产人妖系列| 国产一级免费av| 中文精品99久久国产香蕉| 91国内精品白嫩初高生| 五月婷婷深爱五月| 亚洲国产视频一区| 成人h小游戏| 国产经品一区二区| 免费成人在线观看| 国产精品theporn动漫| 中文字幕少妇一区二区三区| 国产精品毛片视频| 黄色小视频免费网站|