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

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

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

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

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

注意,只有當調(diào)度任務來的時候,ScheduledExecutorService才會真正啟動一個線程,其余時間ScheduledExecutorService都是處于輪詢?nèi)蝿盏臓顟B(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");//設置日期格式
    
    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()));
  }
}

運行結果:

++++++++++++++++++++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");//設置日期格式
    
    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()));
  }
}

運行結果:

++++++++++++++++++++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í)行時間為上一次任務開始起向后推一個時間間隔,即每次執(zhí)行時間為initialDelay,initialDelay+period,initialDelay+2*period。。。。。

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

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

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

相關文章

  • 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設置無效的解決

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

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

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

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

    Mybatis如何自動生成sql語句

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

    關于ZooKeeper原理剖析

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

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

    本文主要介紹了SpringSecurity授權機制的實現(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標簽以及href鏈接

    JAVA 使用正則提取A標簽以及href鏈接

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

最新評論

石门县| 兴仁县| 嫩江县| 临沂市| 秀山| 玛纳斯县| 大连市| 铜梁县| 商城县| 黔西县| 唐河县| 繁峙县| 安多县| 社旗县| 威信县| 德安县| 塔城市| 定西市| 当阳市| 怀来县| 黄梅县| 广河县| 龙江县| 修文县| 江源县| 商水县| 沙河市| 沂南县| 扶绥县| 高尔夫| 保定市| 博白县| 大新县| 社旗县| 江城| 乌拉特前旗| 萍乡市| 东山县| 临朐县| 池州市| 秦皇岛市|