精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产日韩欧美综合| 中文字幕亚洲在线| 无遮挡又爽又刺激的视频| 国产女主播在线一区二区| 在线精品视频视频中文字幕| 亚洲免费999| 日韩经典av| 久久精品综合网| 91传媒免费看| 亚洲综合图片网| 亚洲久久久久| 亚洲精品自在久久| 亚洲精品国产久| 一区二区乱码| 一个色在线综合| 视频一区视频二区视频| 亚洲欧美激情国产综合久久久| 久久久亚洲人| 欧美国产日本高清在线| 国产综合精品久久久久成人av| 2020最新国产精品| 欧美日韩一区在线| 亚洲中文字幕无码专区| 性欧美猛交videos| 国产精品久久久久四虎| 欧美精品亚洲精品| 欧洲精品久久一区二区| 极品尤物av久久免费看| 日韩免费av在线| 九九热国产视频| 中文字幕人成人乱码| 一本大道亚洲视频| 国产精品三级在线观看无码| 91精品日本| 欧美一区二区三区四区高清| 国产一级做a爰片久久| 亚洲美女炮图| 亚洲不卡在线观看| 成人av在线播放观看| 理论片午午伦夜理片在线播放| 久久久久国产精品麻豆ai换脸| 国产91精品一区二区绿帽| 国产又粗又猛又爽又黄视频| 日韩av中文在线观看| 国产91精品久久久久| 国产一级片视频| 欧美国产三区| 欧美日韩成人在线播放| 潘金莲一级黄色片| 婷婷成人基地| 久久精品男人天堂| 国产精品夜夜夜爽阿娇| 99精品美女| 日韩中文字幕在线视频| 女同久久另类69精品国产| 日韩毛片视频| 色噜噜亚洲精品中文字幕| 欧美极品jizzhd欧美18| 精品国产一区探花在线观看| 亚洲午夜未删减在线观看| 午夜时刻免费入口| 日韩精品一区二区久久| 色yeye香蕉凹凸一区二区av| 四虎国产成人精品免费一女五男| 欧美日韩伦理在线免费| 日韩中文字幕精品视频| 欧美爱爱小视频| 激情综合网址| 欧亚精品在线观看| 在线免费一区二区| 麻豆精品一区二区三区| 91天堂在线视频| 亚洲av色香蕉一区二区三区| 成人精品电影在线观看| 麻豆成人av| 永久免费在线观看视频| 亚洲人成网站精品片在线观看| 欧美精品久久96人妻无码| 女同一区二区免费aⅴ| 天天操天天综合网| 中文字幕第80页| 成人动漫视频在线观看| 亚洲成年人在线| 日韩av在线看免费观看| 天天色综合色| 国产69精品久久久久9999| 日韩一级在线视频| 国模一区二区三区白浆| 国产一区二区三区av在线| 蜜桃视频在线观看网站| 中文字幕中文字幕在线一区| 欧美久久久久久久久久久久久久| 欧美aa一级| 欧美福利视频导航| 人妻在线日韩免费视频| 日韩欧美视频| 97国产一区二区精品久久呦| 欧美成人一区二区视频| 国产成人综合在线观看| 欧美人xxxxx| 在线中文字幕电影| 日本高清免费不卡视频| 国偷自产av一区二区三区麻豆| 欧美激情网址| 久久国产精品久久久久久| 天天操天天爽天天干| 久久国内精品视频| 国内一区在线| 成人影欧美片| 91久久精品网| 国产二级一片内射视频播放 | 日本五十肥熟交尾| 日韩精品一区二区久久| 91精品国产91久久久久久久久| 在线免费观看高清视频| 久久夜色精品国产噜噜av| 黄色污污在线观看| 精品久久福利| 亚洲免费福利视频| 国产精品99re| 国产一区二区91| 日韩精品大片| 伊人色综合一区二区三区影院视频| 91精品一区二区三区在线观看| 六月婷婷七月丁香| 亚洲日韩视频| 97视频资源在线观看| 毛片网站在线免费观看| 欧美性生活久久| 国内精品久久99人妻无码| 影音先锋亚洲一区| 草莓视频一区| 成人免费视屏| 欧美日韩精品欧美日韩精品 | 1024精品视频| www.豆豆成人网.com| 久久久精品电影| 在线观看国产精品入口男同| 国产网站一区二区| 欧美国产日韩在线播放| 久久超碰99| 国产99在线|中文| 青春草在线观看| 精品毛片三在线观看| 一边摸一边做爽的视频17国产| 综合精品一区| 91入口在线观看| 激情在线视频播放| 精品免费国产一区二区三区四区| 国产极品国产极品| 国产精品一级片| 国产免费内射又粗又爽密桃视频| 欧美在线在线| 欧美精品激情blacked18| 午夜精品久久久久久久爽| 一区二区三区四区在线免费观看| 永久看看免费大片| 极品中文字幕一区| 国产麻豆乱码精品一区二区三区| 好久没做在线观看| 日韩电影大全免费观看2023年上| 久草精品视频在线观看| 99在线精品视频| 欧美s码亚洲码精品m码| 国产成人高清| 国产精品一区电影| 九七久久人人| 精品国产一区a| 可以免费看的av毛片| 久久久91精品国产一区二区精品| 九色porny91| 天天综合网91| 国产精品一区在线观看| 依依综合在线| 色偷偷88888欧美精品久久久| 国产毛片毛片毛片毛片| 午夜久久久久久| 男生草女生视频| 精品在线播放午夜| 香港三级日本三级a视频| 色88888久久久久久影院| 国产精品日韩在线观看| 99热国产在线| 亚洲国产精久久久久久久| 欧美亚洲另类小说| 亚洲人成网站色在线观看| 免费无码一区二区三区| 久久精品国产精品亚洲精品| 乱子伦一区二区| 蜜桃一区二区| 成人午夜一级二级三级| 少妇淫片在线影院| 日韩午夜在线视频| 天天干天天操av| 欧美理论片在线| 日本在线视频免费| 国产精品高潮呻吟| av2014天堂网| 久久精品99国产精品| 婷婷五月综合缴情在线视频| 日韩久久精品网| 久久精品国产精品国产精品污 | 免费在线观看成年人视频| 青青草视频一区| 中文字幕无码精品亚洲资源网久久| 国产欧美一区| 国产精品一区免费观看| 97色婷婷成人综合在线观看| 欧美怡红院视频一区二区三区| 欧美成人高清在线| 亚洲开心激情网| 亚洲国产精品久久人人爱潘金莲| 在线亚洲高清视频| 五月婷婷激情网| 亚洲欧美色图小说| 亚洲一区 欧美| 91玉足脚交白嫩脚丫在线播放| 久久婷婷中文字幕| 免费一区二区视频| 免费高清在线观看免费| 欧美先锋影音| 欧美xxxx吸乳| 日韩欧美三级| 天堂精品视频| 网曝91综合精品门事件在线| 都市激情久久久久久久久久久| 美女视频一区| 国产精品福利观看| 桃花岛tv亚洲品质| 3344国产精品免费看| 国内在线免费视频| 久久久久国产精品www| 在线黄色网页| 超碰日本道色综合久久综合| 亚洲成人三级| 中文字幕欧美精品在线| 国产对白叫床清晰在线播放| 亚洲美女性生活视频| 五月天激情婷婷| 亚洲精品www久久久久久广东| 午夜精品久久久久久久爽 | 日韩精品dvd| 日韩欧美99| 精品欧美激情在线观看| 日韩.欧美.亚洲| 国产精品免费不| 日韩av电影免费在线| av在线不卡顿| 亚洲精蜜桃久在线| 日韩系列欧美系列| 欧美亚洲视频一区| 香蕉综合视频| 一区二区三区四区免费观看| 欧美 日韩 国产一区二区在线视频| 日本黄色a视频| 午夜久久99| 免费在线看黄色片| 日韩天堂av| 黄色片一级视频| 人妖欧美一区二区| 日韩成人av免费| 国产精品系列在线播放| 国产精品日日摸夜夜爽| 99精品视频在线免费观看| 国产在线观看无码免费视频| 久久精品人人爽人人爽| 中文字幕第69页| 亚洲精品中文字幕乱码三区| 国产精品成人aaaa在线| 狠狠色狠狠色综合日日五| 无码人妻丰满熟妇区bbbbxxxx | 妖精一区二区三区精品视频| 五月天亚洲综合情| 在线观看国产精品入口| 国产免费裸体视频| 久久九九电影| 红桃视频 国产| 成人污污视频在线观看| 30一40一50老女人毛片| 国产精品麻豆一区二区| 久艹视频在线观看| 色偷偷88欧美精品久久久 | 亚洲大胆人体av| 国产综合在线观看| 久色乳综合思思在线视频| 69av成人| 成人妇女免费播放久久久| 超碰成人在线免费| 亚州欧美一区三区三区在线| 欧美精品日韩| 欧美精品成人网| 国产成人自拍在线| 中文字幕有码在线播放| 亚洲自拍与偷拍| 在线观看国产精品视频| 亚洲精品wwww| 大地资源网3页在线观看| 欧美亚洲国产日本| 九色精品蝌蚪| 视频在线观看成人| 99精品国产在热久久| 中文字幕在线观看日| 91丨porny丨中文| www青青草原| 欧美图区在线视频| 五月婷婷激情在线| 欧美精品性视频| 成人午夜毛片| 免费一区二区三区| 黄页网站一区| 国产一区二区在线观看免费视频| 91视频在线看| 久久精品这里只有精品| 欧美日韩免费不卡视频一区二区三区| 天天操天天干天天| 不卡av日日日| 欧美男男gaygay1069| 欧美18视频| 国产亚洲一区在线| 美女搡bbb又爽又猛又黄www| 国产精品久久久久aaaa| 欧美亚洲另类小说| 亚洲欧美日韩中文在线制服| heyzo高清在线| 91嫩草在线| 欧美在线亚洲| 午夜激情视频网| 国产精品欧美一区喷水| 五月天婷婷导航| 亚洲欧美中文在线视频| 波多野结衣在线观看| 不卡视频一区二区| 欧美区国产区| 中文字幕乱妇无码av在线| 亚洲天堂免费在线观看视频| 一区二区国产欧美| 最近2019中文字幕mv免费看| 成人免费网站www网站高清| 欧美久久在线| 亚洲欧美卡通另类91av| 亚洲色图14p| 欧美性极品少妇精品网站| 五月婷婷深深爱| 欧美一级片久久久久久久| 日韩高清一级| 无码日韩人妻精品久久蜜桃| 国产欧美精品一区二区色综合| 日韩精品一区二区亚洲av观看| 亚洲日韩第一页| 高清av一区二区三区| 亚洲精品国产精品久久| 麻豆成人久久精品二区三区红| 国产传媒在线看| 欧美日韩国产高清一区二区| 无遮挡动作视频在线观看免费入口| 国产精品免费一区豆花| 性欧美69xoxoxoxo| 午夜免费福利网站| 亚洲一区二区三区四区在线免费观看 | 欧美成人hd| 亚洲一区中文字幕| 韩国亚洲精品| 成人精品在线观看视频| 欧美调教femdomvk| 国产精品va在线观看视色| 99久久免费国| 亚洲综合精品四区| 一级黄色片网址| 51久久夜色精品国产麻豆| 亚洲淫性视频| 蜜桃av色综合| 精品中文字幕一区二区| 精品处破女学生| 亚洲欧美一区二区三区情侣bbw| 国产精品亚洲成在人线| 女女百合国产免费网站| caoporm超碰国产精品| 亚洲精品一区二三区| 久久精品这里热有精品| 狠狠久久伊人| 亚洲最大成人在线观看| 亚洲综合在线免费观看| 欧美日韩在线中文字幕| 91久久久久久久久久| 亚洲欧洲日本mm| 中文天堂资源在线| 精品国产伦一区二区三区观看体验 | 亚洲欧洲综合另类| 无码精品人妻一区二区| 国产免费观看久久黄| 一区二区三区四区五区在线| 久久久久人妻一区精品色| 亚洲精品电影在线| 亚洲男人在线| 欧美日韩激情视频在线观看| 中文字幕亚洲视频| 天堂在线一二区| 97av影视网在线观看| 免费观看日韩电影| 午夜精品久久久久久久久久久久久蜜桃 |