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

面試問你:為什么有Timer,還會開發(fā)@Scheduled?

開發(fā) 前端
如果你的項目中定時任務(wù)非常多(比如上百個),或者需要動態(tài)添加/刪除任務(wù)、監(jiān)控任務(wù)執(zhí)行狀態(tài),??@Scheduled??可能不夠用了,這時可以考慮更專業(yè)的分布式定時任務(wù)框架,比如XXL-Job、Elastic-Job(不過這是后話了,日常開發(fā)中??@Scheduled??已經(jīng)能覆蓋80%以上的場景)。

誰才是定時任務(wù)的“王者”?

作為Java開發(fā)者,定時任務(wù)是日常開發(fā)中繞不開的需求——比如凌晨3點同步數(shù)據(jù)、每小時生成報表、每天定點推送通知。

提到定時任務(wù),很多人首先會想到JDK自帶的Timer,但在Spring項目里,大家更習(xí)慣用@Scheduled注解。

明明JDK已經(jīng)提供了定時能力,Spring為什么還要專門開發(fā)@Scheduled

今天我們就從原理、用法、局限性三個維度拆解,搞懂這兩者的“恩怨情仇”。

JDK Timer與Spring @Scheduled:定時任務(wù)的雙雄

在Java生態(tài)中,JDK Timer是“元老級”的定時工具,從JDK 1.3開始就存在,是很多開發(fā)者接觸的第一個定時方案;

而Spring的@Scheduled則是“后起之秀”,隨著Spring框架的普及,逐漸成為企業(yè)級開發(fā)的首選。

兩者的核心目標(biāo)一致:在指定時間執(zhí)行任務(wù),但實現(xiàn)邏輯、功能特性、適用場景卻天差地別。搞懂它們的差異,不僅能幫你在項目中選對工具,更能理解“框架為何要封裝原生API”的設(shè)計思路。

JDK Timer:Java定時任務(wù)的“基石”,但不夠靈活

先從大家熟悉的JDK Timer說起。它的設(shè)計很簡單,核心是兩個類:java.util.Timerjava.util.TimerTask

1. 基本概念與原理

  • TimerTask:抽象類,代表“要執(zhí)行的任務(wù)”,開發(fā)者需要繼承它并實現(xiàn)run()方法,把具體邏輯寫在里面。
  • Timer:調(diào)度器,負(fù)責(zé)“安排任務(wù)執(zhí)行”。它內(nèi)部維護(hù)了一個單線程(TimerThread),這個線程會不斷從任務(wù)隊列(TaskQueue)中取出任務(wù),判斷是否到執(zhí)行時間,到點就執(zhí)行TimerTaskrun()方法。
  • 調(diào)度方式:基于“絕對時間”(System.currentTimeMillis()),比如“延遲1000ms執(zhí)行”“每天0點執(zhí)行”,本質(zhì)都是計算出具體的時間戳,再由TimerThread輪詢判斷。

2. 使用示例:簡單但“夠用”

Timer的用法很直觀,幾行代碼就能實現(xiàn)定時任務(wù),適合簡單場景。

場景1:延遲3秒后執(zhí)行一次任務(wù)

import java.util.Timer;
import java.util.TimerTask;

publicclass TimerDemo {
    public static void main(String[] args) {
        // 1. 創(chuàng)建Timer調(diào)度器
        Timer timer = new Timer();
        
        // 2. 創(chuàng)建TimerTask任務(wù)
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("延遲3秒后執(zhí)行:" + System.currentTimeMillis());
                // 任務(wù)執(zhí)行完后關(guān)閉Timer(避免線程一直運行)
                timer.cancel();
            }
        };
        
        // 3. 安排任務(wù):延遲3000ms執(zhí)行
        timer.schedule(task, 3000);
    }
}

場景2:延遲1秒后,每隔2秒執(zhí)行一次任務(wù)

// 安排任務(wù):延遲1000ms,之后每隔2000ms執(zhí)行一次
timer.schedule(task, 1000, 2000);

3. 局限性:單線程+敏感時間,坑不少

雖然Timer能實現(xiàn)基礎(chǔ)定時,但在復(fù)雜業(yè)務(wù)場景下,它的缺點會被無限放大,甚至導(dǎo)致線上問題:

  • 單線程執(zhí)行,任務(wù)相互阻塞:Timer內(nèi)部只有一個線程,如果一個任務(wù)執(zhí)行時間過長(比如本應(yīng)2秒的任務(wù)跑了10秒),后面所有任務(wù)都會被延遲。比如任務(wù)A每隔2秒執(zhí)行,任務(wù)B在任務(wù)A之后1秒執(zhí)行,若任務(wù)A卡了10秒,任務(wù)B會直接被“插隊”,直到A執(zhí)行完才會跑。
  • 對系統(tǒng)時間敏感,可能導(dǎo)致任務(wù)失效:Timer基于絕對時間調(diào)度,如果系統(tǒng)時間被修改(比如往回調(diào)1小時),原本該執(zhí)行的任務(wù)可能會“卡住”,甚至永遠(yuǎn)不執(zhí)行。比如你設(shè)置“每天0點執(zhí)行”,若系統(tǒng)時間從0點1分調(diào)回23點59分,這個任務(wù)會再次等待1分鐘才執(zhí)行,不符合預(yù)期。
  • 任務(wù)異常會導(dǎo)致整個Timer崩潰:如果一個TimerTaskrun()方法拋出未捕獲異常,TimerThread會直接終止,后續(xù)所有任務(wù)都不會再執(zhí)行。比如任務(wù)A拋了空指針,任務(wù)B、C即使到了時間也不會運行,排查起來很麻煩。

定時任務(wù)的“利器”,專為企業(yè)級開發(fā)設(shè)計

Spring框架的核心思想是“簡化開發(fā)”,@Scheduled就是對定時任務(wù)的封裝——它解決了Timer的所有痛點,還提供了更靈活的配置和更穩(wěn)定的執(zhí)行機(jī)制。

1. 功能概述:注解化配置,開箱即用

@Scheduled是Spring的一個注解,只要在Spring管理的Bean的方法上添加該注解,就能將方法變成定時任務(wù)。

它不需要手動創(chuàng)建調(diào)度器、任務(wù)隊列,Spring會自動掃描、初始化、管理任務(wù),開發(fā)者只需關(guān)注“任務(wù)邏輯”和“執(zhí)行時間”。

2. 使用方法與配置:3步搞定,靈活度拉滿

步驟1:開啟定時任務(wù)支持

在Spring Boot啟動類(或Spring配置類)上添加@EnableScheduling注解,告訴Spring“要啟用定時任務(wù)功能”:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling // 開啟定時任務(wù)
public class ScheduledDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ScheduledDemoApplication.class, args);
    }
}

步驟2:寫定時任務(wù)方法

在Bean的方法上添加@Scheduled,并配置執(zhí)行時間(支持3種常用配置):

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component// 必須是Spring Bean
publicclass MyScheduledTask {

    // 1. fixedRate:每隔5秒執(zhí)行一次(以上次任務(wù)開始時間計算)
    @Scheduled(fixedRate = 5000)
    public void taskWithFixedRate() {
        System.out.println("fixedRate任務(wù)執(zhí)行:" + System.currentTimeMillis());
        // 假設(shè)任務(wù)執(zhí)行需要2秒
        try { Thread.sleep(2000); } catch (InterruptedException e) {}
    }

    // 2. fixedDelay:每隔5秒執(zhí)行一次(以上次任務(wù)結(jié)束時間計算)
    @Scheduled(fixedDelay = 5000)
    public void taskWithFixedDelay() {
        System.out.println("fixedDelay任務(wù)執(zhí)行:" + System.currentTimeMillis());
        try { Thread.sleep(2000); } catch (InterruptedException e) {}
    }

    // 3. cron表達(dá)式:每天0點30分執(zhí)行(最靈活的配置)
    @Scheduled(cron = "0 30 0 * * ?")
    public void taskWithCron() {
        System.out.println("cron任務(wù)執(zhí)行:" + System.currentTimeMillis());
    }
}

關(guān)鍵配置說明

配置項

作用

示例

fixedRate

固定頻率執(zhí)行,以上次任務(wù)開始時間

fixedRate=5000(5秒)

fixedDelay

固定延遲執(zhí)行,以上次任務(wù)結(jié)束時間

fixedDelay=5000(5秒)

cron

復(fù)雜時間配置(支持秒、分、時、日等)

0 30 0 * * ?(每天0:30)

其中cron表達(dá)式是最強(qiáng)大的,比如“每周一到周五下午3點15分”可以寫為0 15 15 ? * MON-FRI,幾乎能滿足所有業(yè)務(wù)場景。

3. 底層原理:多線程+解耦,穩(wěn)定性拉滿

@Scheduled的底層比Timer復(fù)雜,但核心是“解耦”和“多線程”,我們拆解關(guān)鍵組件:

  1. ScheduledAnnotationBeanPostProcessor:Spring的后置處理器,在Bean初始化時掃描帶有@Scheduled的方法,將其封裝成ScheduledTask對象,交給調(diào)度器管理。
  2. TaskScheduler:Spring的調(diào)度器接口(類似Timer的角色),默認(rèn)實現(xiàn)是ThreadPoolTaskScheduler——它內(nèi)部維護(hù)了一個線程池(默認(rèn)核心線程數(shù)是1,但可以配置成多線程)。
  3. 任務(wù)執(zhí)行機(jī)制:每個ScheduledTask會被提交到線程池執(zhí)行,即使一個任務(wù)拋了異常,也只會影響當(dāng)前線程,其他任務(wù)正常執(zhí)行(Spring會捕獲異常并打印日志,不會導(dǎo)致整個調(diào)度器崩潰)。

兩者深度對比:選對工具,少踩坑

為了更直觀地看出差異,我們從4個核心維度做對比:

對比維度

JDK Timer

Spring @Scheduled

線程模型

單線程(TimerThread),任務(wù)串行執(zhí)行,相互阻塞

基于線程池(可配置多線程),任務(wù)并行執(zhí)行,互不影響

時間控制

僅支持延遲、固定周期(基于絕對時間),不支持復(fù)雜時間

支持fixedRate、fixedDelay、cron表達(dá)式,復(fù)雜時間配置靈活

異常處理

任務(wù)拋未捕獲異常會導(dǎo)致TimerThread終止,所有任務(wù)失效

異常被線程池捕獲并日志記錄,單個任務(wù)異常不影響其他任務(wù)

配置與集成

需手動創(chuàng)建Timer、TimerTask,無框架集成能力

注解化配置,自動掃描,與Spring生態(tài)無縫集成(如依賴注入)

實際應(yīng)用場景選擇:不是“誰更好”,而是“誰更合適”

雖然@Scheduled優(yōu)勢明顯,但也不是所有場景都要用它,具體看需求:

選JDK Timer的場景:

  • 簡單的獨立Java程序(非Spring項目),比如一個小工具需要定時執(zhí)行任務(wù)。
  • 任務(wù)量少、執(zhí)行時間短,無復(fù)雜時間需求(比如每隔10秒打印一次日志)。
  • 不依賴任何框架,追求“輕量”(不需要引入Spring依賴)。

選Spring @Scheduled的場景:

  • Spring Boot/Spring項目(企業(yè)級開發(fā)的主流場景)。
  • 任務(wù)需要并行執(zhí)行,或存在執(zhí)行時間較長的任務(wù)(避免阻塞)。
  • 需要復(fù)雜的時間配置(比如每月最后一天23點執(zhí)行)。
  • 對任務(wù)穩(wěn)定性要求高(避免單個任務(wù)異常導(dǎo)致整體崩潰)。

“工具選擇”看框架設(shè)計思路

看到這里,你應(yīng)該明白“Spring為什么要開發(fā)@Scheduled”了——不是JDK Timer不好,而是它無法滿足企業(yè)級開發(fā)的“穩(wěn)定性、靈活性、集成性”需求。

Spring通過封裝,解決了原生API的痛點,讓開發(fā)者能更專注于業(yè)務(wù)邏輯,而不是“如何管理調(diào)度器、處理異常、配置線程”。

最后給大家一個小拓展

如果你的項目中定時任務(wù)非常多(比如上百個),或者需要動態(tài)添加/刪除任務(wù)、監(jiān)控任務(wù)執(zhí)行狀態(tài),@Scheduled可能不夠用了,這時可以考慮更專業(yè)的分布式定時任務(wù)框架,比如XXL-Job、Elastic-Job(不過這是后話了,日常開發(fā)中@Scheduled已經(jīng)能覆蓋80%以上的場景)。

責(zé)任編輯:武曉燕 來源: Java面試教程
相關(guān)推薦

2019-10-18 14:54:04

Kafka寫入磁盤

2022-01-14 08:12:39

瀏覽器面試問http

2018-04-12 17:29:03

軟件開發(fā)開發(fā)架構(gòu)

2017-02-16 20:05:36

軟件開發(fā)

2025-09-02 03:00:00

HTTPS敏感數(shù)據(jù)加密

2012-06-18 15:05:54

開發(fā)

2021-12-20 10:30:33

forforEach前端

2019-04-15 14:40:46

消息隊列Java編程

2025-04-09 00:00:55

2012-06-18 09:49:03

開發(fā)人員程序員

2017-05-31 08:45:03

2020-06-22 11:50:38

TCPIP協(xié)議

2009-03-03 09:33:13

面試ORACLE

2022-12-09 14:34:40

程序員工資離職

2023-08-29 07:46:08

Redis數(shù)據(jù)ReHash

2022-07-27 07:36:01

TCP可靠性

2025-03-04 08:06:17

2025-11-10 03:00:00

2010-11-10 10:35:00

求職者

2015-02-03 03:05:02

LinuxLinux命令
點贊
收藏

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

成年人午夜视频在线观看| 国产精品jizz视频| 熟女少妇a性色生活片毛片| 欧美h版在线观看| 日韩欧美国产中文字幕| 亚洲午夜精品一区二区三区| 亚洲不卡免费视频| 蜜桃av综合| 欧美精品免费在线| 一级片视频免费看| 成人高潮视频| 欧美日韩国产123区| 妺妺窝人体色777777| av网站无病毒在线| 菠萝蜜视频在线观看一区| 国产精品日韩精品| 国产午夜视频在线播放| 成人a'v在线播放| 亚洲国产精品高清久久久| 天天综合网日韩| 蜜桃视频m3u8在线观看| 亚洲视频1区2区| 婷婷精品国产一区二区三区日韩| 欧美一级一区二区三区| 久久av老司机精品网站导航| 青青草精品毛片| 免费一级黄色大片| 欧美电影《睫毛膏》| 亚洲色图综合网| 在线看黄色的网站| 秋霞一区二区| 欧美狂野另类xxxxoooo| 日韩手机在线观看视频| ririsao久久精品一区| 综合在线观看色| 亚洲v日韩v欧美v综合| 五十路在线视频| 成人免费va视频| 97超碰人人看人人 | 日本三级日本三级日本三级极| 台湾天天综合人成在线| 日本高清成人免费播放| 日本wwww视频| 成人福利av| 欧美日韩在线影院| 成 年 人 黄 色 大 片大 全| 牛牛精品在线视频| 亚洲激情欧美激情| 在线观看成人免费| av免费网站在线| 亚洲精品中文在线| 成人在线免费观看网址| 国产区在线看| 亚洲一区二区三区四区在线 | 久久综合九色| 国产99视频在线观看| youjizz在线视频| 丝瓜av网站精品一区二区| 亲爱的老师9免费观看全集电视剧| 亚洲黄色三级视频| 免费在线欧美黄色| 日韩av成人在线观看| 波多野结衣 久久| 日韩精品电影一区亚洲| 国产精品亚洲综合天堂夜夜| 97人妻精品一区二区三区动漫 | 91久久久久久久久久| 国产精品久久久久久久免费| 国产一区二区免费看| 91精品国产99久久久久久红楼| 精品国产九九九| 成人h动漫精品一区二| 国产综合精品一区二区三区| 青青久在线视频免费观看| 久久久九九九九| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 黄网页在线观看| 亚洲二区在线观看| 精品中文字幕av| 欧美亚洲黄色| 欧美v亚洲v综合ⅴ国产v| 欧美一级片黄色| 波多野结衣久久久久| 天堂在线中文网官网| 色中色一区二区| 中文字幕第88页| 亚洲午夜免费| 亚洲图片在区色| 欧美精品久久久久久久久46p| 韩国在线视频一区| 国产精品va在线| 99在线精品视频免费观看软件| av午夜精品一区二区三区| 日韩aⅴ视频一区二区三区| 国产高清一区二区三区视频 | 欧美精品久久96人妻无码| 污污在线观看| 在线观看亚洲精品| 人妻 丝袜美腿 中文字幕| 狠狠色丁香婷婷综合影院| www.xxxx欧美| 国产毛片aaa| 国产乱码精品一区二区三| 久久久影院一区二区三区| 老司机精品影院| 日韩欧美在线视频| 无人码人妻一区二区三区免费| 亚洲性视频大全| 久久久久久91| 国产又粗又大又爽| 久久久精品中文字幕麻豆发布| 日韩精品久久一区二区| 国产黄色精品| 亚洲欧美三级在线| 99免费在线观看| 国产一区二区三区在线观看免费| 久久精品综合一区| 欧美videossex另类| 欧美探花视频资源| 人妻熟女aⅴ一区二区三区汇编| 欧美二区不卡| 成人春色激情网| 二区在线观看| 色婷婷狠狠综合| 黄色短视频在线观看| 欧美日韩1区2区3区| 成人精品视频在线| av中文天堂在线| 欧美综合一区二区| 中文字幕在线免费看线人| 韩国精品一区二区三区| 91在线观看免费| 欧美a免费在线| 欧美日韩在线播放| 亚洲欧美日韩在线一区| 国产乱国产乱老熟300部视频| 日韩专区精品| 国产日韩欧美电影在线观看| 91在线导航| 欧美日韩一区二区三区四区 | 亚洲国产欧美在线人成| 日本高清免费在线视频| 91欧美在线| 成人激情黄色网| 成人免费网址| 日韩一级二级三级| 欧美爱爱小视频| 国产v综合v亚洲欧| 97中文字幕在线| 国产精品久av福利在线观看| 国外视频精品毛片| 日本中文字幕电影在线观看| 欧美午夜精品伦理| 国产精品国产三级国产专业不 | 欧美性一二三区| 超碰人人干人人| 狠狠色狠狠色综合系列| 女同性恋一区二区| 99久久人爽人人添人人澡| 久久久久久久影院| 视频在线观看你懂的| 日本久久电影网| 国产主播av在线| 国产一区二区免费看| 欧美在线观看视频免费| 久久99国产精品久久99大师| 欧美在线视频导航| 尤物视频在线免费观看| 欧美成人猛片aaaaaaa| 日韩av一二三区| 久久久久久久久久久久久夜| 人人干人人干人人| 欧美激情综合| 欧美久久久久久久| 四虎影视国产精品| 97视频在线观看网址| 黄色av网站在线免费观看| 欧美日韩高清在线播放| 精品少妇theporn| 久久久影视传媒| 99日在线视频| 国产亚洲精品v| 一区不卡字幕| 精品国产一区二区三区成人影院 | 理论片在线不卡免费观看| 丰满人妻一区二区| 欧美亚洲综合色| 欧美精品xxxxx| 久久久精品一品道一区| 秋霞午夜鲁丝一区二区| 久久精品网址| 日韩成人三级视频| 精品日本12videosex| 99在线观看| 久久爱.com| 2019亚洲日韩新视频| 欧美69xxxx| 亚洲欧美国内爽妇网| 成人黄色免费视频| 在线观看亚洲专区| 日本va欧美va国产激情| 亚洲女女做受ⅹxx高潮| 日韩av在线看免费观看| 国产成人一区二区精品非洲| 婷婷丁香激情网| 一区二区三区福利| 成年丰满熟妇午夜免费视频| 国产一区二区三区四区大秀| 国产日韩一区欧美| 国产剧情一区二区在线观看| 国产精品久久电影观看| segui88久久综合| 欧美成人合集magnet| 视频免费一区| 亚洲人成在线播放| 无码精品人妻一区二区三区影院| 制服丝袜国产精品| 黄色大全在线观看| 岛国av在线不卡| 国产在线视频99| 亚洲精品高清视频在线观看| аⅴ天堂中文在线网| 26uuu另类欧美| 国模私拍在线观看| 不卡的av电影| 人妻体内射精一区二区三区| 国产一区视频在线看| xxx国产在线观看| 三级欧美在线一区| 北条麻妃在线观看| 亚洲欧美激情诱惑| 欧美视频在线一区| 九九热久久免费视频| 久久综合狠狠综合久久综合88| 污污免费在线观看| 成人小视频在线| 在线播放第一页| 大白屁股一区二区视频| 少妇献身老头系列| 国产91精品一区二区| 精品国产一二区| 国产suv精品一区二区6| 亚洲欧洲国产视频| 成人一区在线观看| 黄色在线免费播放| 99久久免费视频.com| 国产一线在线观看| 97久久人人超碰| 四虎永久免费影院| 久久久精品tv| av片在线免费看| 亚洲天堂av老司机| 18岁成人毛片| 亚洲一线二线三线久久久| 国产 日韩 欧美 成人| 亚洲地区一二三色| 国产精品久久久久久久久久久久久久久久久| 午夜天堂影视香蕉久久| 欧美特黄aaaaaa| 欧美在线观看你懂的| 中文字幕乱码人妻二区三区| 欧美精品日韩精品| 性色av蜜臀av| 精品中文字幕久久久久久| porn视频在线观看| 成人444kkkk在线观看| 电影k8一区二区三区久久| 97国产真实伦对白精彩视频8| 免费成人美女女| 成人福利网站在线观看11| 99久久人爽人人添人人澡| 久久久水蜜桃| 久久久久久免费视频| 日本手机在线视频| 日韩国产高清影视| 无码人妻少妇色欲av一区二区| 成年人国产精品| 阿v天堂2014| 亚洲一区二区高清| 区一区二在线观看| 欧美一区二区免费观在线| 日本黄色大片视频| 在线观看日韩www视频免费| dy888亚洲精品一区二区三区| 68精品国产免费久久久久久婷婷 | 成人国产亚洲精品a区天堂华泰| 试看120秒一区二区三区| 久久久久se| 91精品亚洲| 欧美视频免费播放| 国产一区二区福利| 亚洲黄色小说视频| 亚洲精品精品亚洲| 懂色av中文字幕| 337p日本欧洲亚洲大胆色噜噜| 91在线品视觉盛宴免费| 韩剧1988在线观看免费完整版| 成人黄页网站视频| 久久久综合香蕉尹人综合网| 亚洲综合小说| 国产三级三级三级看三级| 成人免费视频视频在线观看免费 | 国内激情久久| jizz欧美性11| 97se狠狠狠综合亚洲狠狠| 中文字幕无码日韩专区免费| 色婷婷综合久久久久中文一区二区| 国产乱码久久久久| 亚洲人成电影在线播放| bl在线肉h视频大尺度| 91免费看片在线| 欧美日韩国产传媒| 欧美一区二区三区爽大粗免费| 国产精品12区| 一级片一级片一级片| 欧洲一区二区av| 天堂中文在线资| 久久久久亚洲精品| 精品一区二区三区在线观看视频| 天堂资源在线亚洲视频| 久久亚洲欧美| 不卡一区二区在线观看| 香港成人在线视频| 日本高清视频www| 久久久久久国产| 51精品国产| 成年丰满熟妇午夜免费视频| 国产在线视频精品一区| 国产传媒视频在线| 欧美无乱码久久久免费午夜一区| 少妇性bbb搡bbb爽爽爽欧美| 久久男人av资源网站| 99re热精品视频| 丰满少妇大力进入| 成人激情av网| 日韩黄色一级大片| 国产午夜精品久久久| 少妇淫片在线影院| 久久久久资源| 视频精品一区二区| 蜜桃av乱码一区二区三区| 在线免费观看视频一区| av大片在线播放| 91精品国产综合久久久久久蜜臀 | 久久这里只有精品一区二区| 国产一区二区三区小说| 白白色亚洲国产精品| 日韩精品视频播放| 日韩成人在线观看| 综合在线影院| 午夜精品视频在线观看一区二区| 日本欧美一区二区| www.com.av| 欧美一级二级三级乱码| 激情网站在线| 久久久综合亚洲91久久98| 五月天婷婷在线播放| 91国产丝袜在线播放| 国产乱子伦三级在线播放| 国产乱人伦真实精品视频| 国产精品国内免费一区二区三区| 国产高清av片| 亚洲国产裸拍裸体视频在线观看乱了 | 国产福利短视频| 色av成人天堂桃色av| 91精品国产综合久久久久久豆腐| 国产又爽又黄的激情精品视频| 综合久久综合| 中文字幕无码人妻少妇免费| 色综合久久中文综合久久97| 婷婷视频在线| 国产福利一区二区三区在线观看| 亚洲在线电影| 欧美a级片免费看| 亚洲成人xxx| 嫩草伊人久久精品少妇av杨幂| 强开小嫩苞一区二区三区网站 | 91精品福利在线一区二区三区| 精精国产xxxx视频在线中文版| 日本一区二区在线视频| 国产精品中文字幕日韩精品| 日韩 欧美 综合| 日韩中文字幕av| 久久激情av| 欧美午夜精品理论片| 精品久久中文字幕| 美女羞羞视频在线观看| 国内视频一区二区| 麻豆精品一区二区| 日韩精品手机在线| 精品国产一区二区三区四区在线观看 | 日本免费www| 欧美精品一区在线观看| 国产a亚洲精品| 国产精品秘入口18禁麻豆免会员| 国产精品另类一区| 性xxxx搡xxxxx搡欧美| 成人福利在线观看| 久久蜜桃资源一区二区老牛| 黄色一级视频在线观看|