最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于ScheduledExecutorService的兩種方法(詳解)

 更新時間:2017年10月21日 10:34:08   作者:面條啊Andrew  
下面小編就為大家?guī)硪黄赟cheduledExecutorService的兩種方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

開發(fā)中,往往遇到另起線程執(zhí)行其他代碼的情況,用java定時任務(wù)接口ScheduledExecutorService來實現(xiàn)。

ScheduledExecutorService是基于線程池設(shè)計的定時任務(wù)類,每個調(diào)度任務(wù)都會分配到線程池中的一個線程去執(zhí)行,也就是說,任務(wù)是并發(fā)執(zhí)行,互不影響。

注意,只有當(dāng)調(diào)度任務(wù)來的時候,ScheduledExecutorService才會真正啟動一個線程,其余時間ScheduledExecutorService都是處于輪詢?nèi)蝿?wù)的狀態(tài)。

1.scheduleAtFixedRate方法

例子:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduleAtFixedRateDemo {

  public static void main(String[] args) {
    ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
    SimpleDateFormat df = 
        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設(shè)置日期格式
    
    executorService.scheduleAtFixedRate(new Runnable(){

      @Override
      public void run() {
        System.out.println("++++++++++++++++++++thread:" + df.format(new Date()));
      }
      
    }, 2, 3, TimeUnit.SECONDS);
    System.out.println("++++++++++++++++++++main:" + df.format(new Date()));
  }
}

運行結(jié)果:

++++++++++++++++++++main:2017-10-20 15:20:52
++++++++++++++++++++thread:2017-10-20 15:20:54
++++++++++++++++++++thread:2017-10-20 15:20:57
++++++++++++++++++++thread:2017-10-20 15:21:00
++++++++++++++++++++thread:2017-10-20 15:21:03
++++++++++++++++++++thread:2017-10-20 15:21:06

可以看出來,在2s后,子線程開始執(zhí)行,并且每過3s輪詢執(zhí)行一次。

2.scheduleWithFixedDelay方法

例子:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * ScheduleWithFixedDelay的用法
 * @author Administrator
 *
 */
public class ScheduleWithFixedDelayDemo {

  public static void main(String[] args) {
    ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
    SimpleDateFormat df = 
      new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設(shè)置日期格式
    
    executorService.scheduleWithFixedDelay(new Runnable(){
      @Override
      public void run() {  
        System.out.println("++++++++++++++++++++thread:" + df.format(new Date()));
      }
      
    }, 2, 3, TimeUnit.SECONDS);
    
    System.out.println("++++++++++++++++++++main:" + df.format(new Date()));
  }
}

運行結(jié)果:

++++++++++++++++++++main:2017-10-20 15:24:32
++++++++++++++++++++thread:2017-10-20 15:24:34
++++++++++++++++++++thread:2017-10-20 15:24:37
++++++++++++++++++++thread:2017-10-20 15:24:40
++++++++++++++++++++thread:2017-10-20 15:24:43

3.兩個區(qū)別

ScheduleAtFixedRate每次執(zhí)行時間為上一次任務(wù)開始起向后推一個時間間隔,即每次執(zhí)行時間為initialDelay,initialDelay+period,initialDelay+2*period。。。。。

ScheduleWithFixedDelay每次執(zhí)行時間為上一次任務(wù)結(jié)束起向后推一個時間間隔,即每次執(zhí)行時間為:initialDelay,initialDelay+executeTime+delay,initialDelay+2*executeTime+2*delay。。。。。

由此可見,ScheduleAtFixedRate是基于固定時間間隔進(jìn)行任務(wù)調(diào)度,ScheduleWithFixedDelay取決于每次任務(wù)執(zhí)行的時間長短,是基于不固定時間間隔進(jìn)行任務(wù)調(diào)度。

以上這篇基于ScheduledExecutorService的兩種方法(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis-Plus 批量保存的操作方法

    MyBatis-Plus 批量保存的操作方法

    在項目開發(fā)中,需要插入批量插入20多萬條數(shù)據(jù),通過日志觀察,發(fā)現(xiàn)在調(diào)用MyBatis-Plus中的saveBatch()方法性能非常的差,本篇文章主要分享一下saveBatch()的原理以及使用的注意事項,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • Java并發(fā)工具類Phaser詳解

    Java并發(fā)工具類Phaser詳解

    這篇文章主要介紹了Java并發(fā)工具類Phaser詳解,Phaser(階段協(xié)同器)是一個Java實現(xiàn)的并發(fā)工具類,用于協(xié)調(diào)多個線程的執(zhí)行,它提供了一些方便的方法來管理多個階段的執(zhí)行,可以讓程序員靈活地控制線程的執(zhí)行順序和階段性的執(zhí)行,需要的朋友可以參考下
    2023-11-11
  • jar的MANIFEST.MF配置Class-Path, java -classpath設(shè)置無效的解決

    jar的MANIFEST.MF配置Class-Path, java -classpath設(shè)置無效的解

    這篇文章主要介紹了jar的MANIFEST.MF配置Class-Path, java -classpath設(shè)置無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 解決MyBatis @param注解參數(shù)類型錯誤異常的問題

    解決MyBatis @param注解參數(shù)類型錯誤異常的問題

    這篇文章主要介紹了解決MyBatis @param注解參數(shù)類型錯誤異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Mybatis如何自動生成sql語句

    Mybatis如何自動生成sql語句

    這篇文章主要介紹了Mybatis如何自動生成sql語句,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 關(guān)于ZooKeeper原理剖析

    關(guān)于ZooKeeper原理剖析

    ZooKeeper是一種分布式、高可用性的協(xié)調(diào)服務(wù),主要用于幫助系統(tǒng)避免單點故障和建立可靠的應(yīng)用程序,它通過Leader、Follower和Observer的角色來協(xié)調(diào)節(jié)點,并提供分布式協(xié)作服務(wù)和維護(hù)配置信息,ZooKeeper在HDFS、YARN、HBase、SmallFS和Kafka等大數(shù)據(jù)產(chǎn)品中都有廣泛的應(yīng)用
    2025-02-02
  • SpringSecurity授權(quán)機制的實現(xiàn)(AccessDecisionManager與投票決策)

    SpringSecurity授權(quán)機制的實現(xiàn)(AccessDecisionManager與投票決策)

    本文主要介紹了SpringSecurity授權(quán)機制的實現(xiàn),其核心是AccessDecisionManager和投票系統(tǒng),下面就來介紹一下,感興趣的可以了解一下
    2025-04-04
  • 10分鐘帶你理解Java中的反射

    10分鐘帶你理解Java中的反射

    反射是java中一種強大的工具,能夠使我們很方便的創(chuàng)建靈活的代碼,這篇文章帶大家十分鐘快速理解Java中的反射,有需要的可以參考借鑒。
    2016-08-08
  • 詳解SpringBoot優(yōu)雅編碼之Lombok加持

    詳解SpringBoot優(yōu)雅編碼之Lombok加持

    這篇文章主要介紹了詳解SpringBoot優(yōu)雅編碼之Lombok加持,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • JAVA 使用正則提取A標(biāo)簽以及href鏈接

    JAVA 使用正則提取A標(biāo)簽以及href鏈接

    這篇文章主要介紹了JAVA 使用正則提取A標(biāo)簽以及href鏈接的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

筠连县| 霍林郭勒市| 将乐县| 湖北省| 兴宁市| 周宁县| 潍坊市| 兰溪市| 宜州市| 南溪县| 连江县| 民丰县| 长春市| 宁武县| 晋州市| 秀山| 大洼县| 湘潭市| 梅州市| 永济市| 新平| 华池县| 武安市| 英德市| 辰溪县| 衢州市| 黔江区| 山东省| 邢台县| 漳平市| 银川市| 绥化市| 曲松县| 吉木萨尔县| 西藏| 青冈县| 松溪县| 扎兰屯市| 浦县| 颍上县| 扶沟县|