精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

java實(shí)現(xiàn)定時(shí)器的四種方式

工程師鄧生 ? 來(lái)源:未知 ? 作者:劉芹 ? 2023-10-18 17:20 ? 次閱讀

java實(shí)現(xiàn)定時(shí)器的四種方式

1. 使用Thread.sleep()方法

Thread.sleep()方法可以讓當(dāng)前線程暫停執(zhí)行一段時(shí)間,我們可以利用它來(lái)實(shí)現(xiàn)簡(jiǎn)單的定時(shí)器。

示例代碼:

```java
public class TimerDemo1 {
public static void main(String[] args) throws InterruptedException {
int count = 0;
while (true) {
System.out.println("定時(shí)器已經(jīng)運(yùn)行了 " + (++count) + " 秒");
Thread.sleep(1000); // 暫停1000毫秒,即1秒
}
}
}
```

該示例中我們使用了一個(gè)無(wú)限循環(huán),每次循環(huán)輸出當(dāng)前運(yùn)行的時(shí)間,并暫停1秒鐘后再繼續(xù)。

優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,易于理解。

缺點(diǎn):無(wú)法在定時(shí)器運(yùn)行過(guò)程中修改定時(shí)器的時(shí)間或停止定時(shí)器,不適合實(shí)現(xiàn)復(fù)雜的定時(shí)器邏輯。

2. 使用Timer類(lèi)

Timer類(lèi)是Java提供的一個(gè)簡(jiǎn)單的定時(shí)器工具,可以輕松實(shí)現(xiàn)定時(shí)器的開(kāi)啟、停止、暫停等操作。

示例代碼:

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

public class TimerDemo2 {
public static void main(String[] args) throws InterruptedException {
Timer timer = new Timer();
int count = 0;
timer.schedule(new TimerTask() {
public void run() {
System.out.println("定時(shí)器已經(jīng)運(yùn)行了 " + (++count) + " 秒");
}
}, 1000, 1000);
Thread.sleep(5000);
timer.cancel();
}
}
```

該示例中我們使用了Timer類(lèi)實(shí)現(xiàn)定時(shí)器的功能,使用timer.schedule()方法開(kāi)啟定時(shí)器,可以設(shè)定初始延遲時(shí)間、定時(shí)器間隔時(shí)間,并通過(guò)timer.cancel()方法停止定時(shí)器。

優(yōu)點(diǎn):使用方便,適合實(shí)現(xiàn)一些簡(jiǎn)單的定時(shí)任務(wù)。

缺點(diǎn):無(wú)法在定時(shí)器運(yùn)行過(guò)程中修改定時(shí)器的時(shí)間或停止定時(shí)器,不支持并發(fā)操作。

3. 使用ScheduledExecutorService類(lèi)

ScheduledExecutorService類(lèi)是Java提供的用于定時(shí)執(zhí)行任務(wù)的工具類(lèi),可以設(shè)定定時(shí)器的初始延遲時(shí)間、間隔時(shí)間、并發(fā)量等參數(shù),支持更加靈活的定時(shí)器條件設(shè)定和停止。

示例代碼:

```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class TimerDemo3 {
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); // 開(kāi)啟一個(gè)線程池
int count = 0;
executor.scheduleAtFixedRate(() -> System.out.println("定時(shí)器已經(jīng)運(yùn)行了 " + (++count) + " 秒"), 1, 1, TimeUnit.SECONDS);
Thread.sleep(5000);
executor.shutdownNow();
}
}
```

該示例中我們使用了ScheduledExecutorService類(lèi)實(shí)現(xiàn)定時(shí)器的功能,在executor.scheduleAtFixedRate()方法中設(shè)定了初始延遲時(shí)間、定時(shí)器間隔時(shí)間,并通過(guò)executor.shutdownNow()方法停止定時(shí)器。

優(yōu)點(diǎn):靈活且方便,支持并發(fā)操作,適合實(shí)現(xiàn)一些復(fù)雜的定時(shí)任務(wù)。

缺點(diǎn):算法略有復(fù)雜,需要一定的背景知識(shí)。

4. 使用Quartz類(lèi)

Quartz是Java中一個(gè)強(qiáng)大的定時(shí)器框架,支持各種復(fù)雜的計(jì)劃和時(shí)間設(shè)定,適用于大型項(xiàng)目中的復(fù)雜定時(shí)任務(wù)。

示例代碼:

```java
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.CronScheduleBuilder.cronSchedule;

public class TimerDemo4 {
public static void main(String[] args) throws SchedulerException, InterruptedException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 獲取調(diào)度器
scheduler.start();
Job myJob = new Job() { // 自定義任務(wù)
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("調(diào)度器運(yùn)行中...");
}
};
scheduler.scheduleJob(
newJob(myJob.getClass()) // 設(shè)置任務(wù)
.withIdentity("myJob", "group1")
.build(),
newTrigger()
.withIdentity("myJobTrigger", "group1")
.withSchedule(
simpleSchedule() // 不重復(fù)執(zhí)行
.withIntervalInSeconds(1)
.withRepeatCount(0)
)
.build()
);
Thread.sleep(5000);
scheduler.shutdown();
}
}
```

該示例中我們使用了Quartz框架實(shí)現(xiàn)定時(shí)器,創(chuàng)建一個(gè)自定義的任務(wù),并調(diào)度它的執(zhí)行。我們可以通過(guò)修改Trigger實(shí)現(xiàn)更加復(fù)雜的時(shí)間調(diào)度設(shè)定。

優(yōu)點(diǎn):可以實(shí)現(xiàn)各種復(fù)雜的計(jì)劃和時(shí)間設(shè)定,適用于大型項(xiàng)目中的復(fù)雜定時(shí)任務(wù)。

缺點(diǎn):相對(duì)于其他方案來(lái)說(shuō),Quartz的學(xué)習(xí)和上手成本比較高。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2960

    瀏覽量

    104563
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3241

    瀏覽量

    114516
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    變流電路的換流方式有哪四種

    變流電路是一將一形式的電能轉(zhuǎn)換為另一形式的電能的電路,廣泛應(yīng)用于電力電子領(lǐng)域。在變流電路中,換流方式實(shí)現(xiàn)電能轉(zhuǎn)換的關(guān)鍵技術(shù)之一。換流
    的頭像 發(fā)表于 08-14 11:08 ?1803次閱讀

    定時(shí)器的工作方式介紹

    定時(shí)器是計(jì)算機(jī)和嵌入式系統(tǒng)中常見(jiàn)的一硬件模塊,用于實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。定時(shí)器的工作方式通常由一
    的頭像 發(fā)表于 07-12 10:29 ?752次閱讀

    定時(shí)器相關(guān)的寄存有哪些類(lèi)型

    在微控制編程中,定時(shí)器是一非常常見(jiàn)的功能模塊,用于實(shí)現(xiàn)各種定時(shí)和計(jì)數(shù)功能。定時(shí)器的工作原理是
    的頭像 發(fā)表于 07-12 10:25 ?795次閱讀

    元器件的包裝方式及常見(jiàn)的四種方式

    四種元件包裝方式在實(shí)際生產(chǎn)和使用中廣泛應(yīng)用,不同的包裝方式適用于不同類(lèi)型和規(guī)格的元件,并且可以根據(jù)具體要求進(jìn)行定制化的包裝設(shè)計(jì)。不同的包裝方式也可以影響元件的存儲(chǔ)、運(yùn)輸和使用,選擇適合
    的頭像 發(fā)表于 06-27 12:58 ?1356次閱讀

    如何實(shí)現(xiàn)一個(gè)軟件定時(shí)器

    在Linux,uC/OS,F(xiàn)reeRTOS等操作系統(tǒng)中,都帶有軟件定時(shí)器,原理大同小異。典型的實(shí)現(xiàn)方法是:通過(guò)一個(gè)硬件定時(shí)器產(chǎn)生固定的時(shí)鐘節(jié)拍,每次硬件定時(shí)器中斷到,就對(duì)一個(gè)全局的時(shí)間
    的頭像 發(fā)表于 04-29 11:00 ?592次閱讀

    s7200定時(shí)器的五故障介紹

    定時(shí)器或CPU故障:如果定時(shí)器本身或PLC的CPU出現(xiàn)故障,也可能導(dǎo)致定時(shí)器無(wú)法復(fù)位。此時(shí),需要檢查定時(shí)器和CPU的工作狀態(tài),確保其正常運(yùn)行。
    的頭像 發(fā)表于 04-03 17:08 ?2212次閱讀

    請(qǐng)問(wèn)TIM高級(jí)定時(shí)器空閑極性O(shè)IS OISN設(shè)置的意義是什么?

    定時(shí)器的CCP和CCNP是不是00 01 10 11四種配置情況都可能有呢?OIS和OISN是不是00 01 10 11四種配置情況都可能有呢?一般怎么應(yīng)用呢
    發(fā)表于 04-01 06:59

    定時(shí)器原理能控制馬達(dá)嗎為什么

    定時(shí)器原理可以用于控制馬達(dá)。馬達(dá)是一將電能轉(zhuǎn)換為機(jī)械能的設(shè)備,通常由電動(dòng)機(jī)和傳動(dòng)裝置組成。定時(shí)器是一電子設(shè)備,用來(lái)生成和計(jì)時(shí)精確而穩(wěn)定的時(shí)間信號(hào)。通過(guò)將
    的頭像 發(fā)表于 01-23 15:21 ?615次閱讀

    555定時(shí)器的基本功能 555定時(shí)器的工作原理及其應(yīng)用

    定時(shí)器有三基本工作模式,分別是單穩(wěn)態(tài)、自由運(yùn)放和雙穩(wěn)態(tài)。它可以在多種電子電路中實(shí)現(xiàn)功能的實(shí)現(xiàn)。下面將詳細(xì)介紹它們的功能特點(diǎn)。 單穩(wěn)態(tài)模式:在單穩(wěn)態(tài)模式下,555
    的頭像 發(fā)表于 01-18 11:12 ?1.4w次閱讀

    51單片機(jī)定時(shí)器定時(shí)1秒程序流水燈結(jié)果分析

    流水燈的設(shè)計(jì)原理、實(shí)現(xiàn)步驟和結(jié)果分析。 一、設(shè)計(jì)原理 在51單片機(jī)中,定時(shí)器常用的工作方式有兩定時(shí)器模式和計(jì)數(shù)
    的頭像 發(fā)表于 12-26 14:57 ?6704次閱讀

    定時(shí)器會(huì)阻塞線程嗎 定時(shí)器指令有哪幾種

    定時(shí)器會(huì)阻塞線程嗎 定時(shí)器指令有哪幾種? 定時(shí)器一般不會(huì)阻塞線程,但具體是否會(huì)阻塞取決于所使用的定時(shí)器實(shí)現(xiàn)
    的頭像 發(fā)表于 12-19 14:03 ?897次閱讀

    四種霍爾元件的感應(yīng)方式分別是什么呢?

    和順磁元件。以下將詳細(xì)介紹這四種霍爾元件的感應(yīng)方式。 一、線性霍爾元件 線性霍爾元件是最常見(jiàn)的一霍爾元件,也被稱(chēng)為磁敏電阻。它是通過(guò)外加電壓和磁場(chǎng)之間的相互作用來(lái)感應(yīng)電流變化的。當(dāng)
    的頭像 發(fā)表于 12-18 14:49 ?735次閱讀

    設(shè)備管理通道控制四種方式

    設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或處理機(jī)之間的數(shù)據(jù)傳送,外圍設(shè)備和內(nèi)存之間的輸入/輸出控制方式四種,下面分別介紹。
    發(fā)表于 12-08 14:05 ?990次閱讀
    設(shè)備管理通道控制<b class='flag-5'>四種</b><b class='flag-5'>方式</b>

    四種接近傳感PK,誰(shuí)能勝出?

    四種接近傳感PK,誰(shuí)能勝出?
    的頭像 發(fā)表于 12-07 09:28 ?1648次閱讀
    <b class='flag-5'>四種</b>接近傳感<b class='flag-5'>器</b>PK,誰(shuí)能勝出?

    Spring中依賴(lài)注入的四種方式

    詳細(xì)介紹四種常見(jiàn)的依賴(lài)注入方式。 第一方式是構(gòu)造函數(shù)注入。構(gòu)造函數(shù)注入是最基礎(chǔ)也是最常用的依賴(lài)注入方式之一。它通過(guò)在對(duì)象創(chuàng)建時(shí)將依賴(lài)的對(duì)象
    的頭像 發(fā)表于 12-03 15:11 ?1913次閱讀