1. 程式人生 > >Timer的定時排程函式schedule的四種用法(Java)

Timer的定時排程函式schedule的四種用法(Java)

schedule的四種用法

schedule(task,time)

task-所安排的任務  time-執行任務的時間

作用:在時間等於或者超過time的時候執行且僅執行一次

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
    private Integer cout = 0;
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//獲取當前系統時間
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//獲取距離當前時間3秒後的時間
        Timer timer = new Timer();
        timer.schedule(task,calendar.getTime());

    }
}

schedule(task,time,period)

task-所要安排執行的任務 time-首次執行任務的時間 period-執行一次task的時間間隔,單位毫秒

作用:時間等於或者超過time首次執行task,之後每隔period毫秒重複執行一次任務

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
    private Integer cout = 0;
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//獲取當前系統時間
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar= Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//獲取距離當前時間3秒後的時間
        Timer timer = new Timer();
       //timer.schedule(task,calendar.getTime());
        timer.schedule(task,calendar.getTime(),2000);
    }
}

schedule(task,delay)

task-所要安排的任務  delay-執行任務前的延遲時間,單位毫秒

作用:等待delay毫秒後執行僅執行一次task

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//獲取當前系統時間
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        //calendar.add(Calendar.SECOND,3);//獲取距離當前時間3秒後的時間
        Timer timer = new Timer();
        //timer.schedule(task,calendar.getTime());
        //timer.schedule(task,calendar.getTime(),2000);
        timer.schedule(task,2000);
    }
}

schedule(task, delay,period)

作用:在等待delay毫秒後首次執行task,每隔period毫秒重複執行task

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//獲取當前系統時間
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        //calendar.add(Calendar.SECOND,3);//獲取距離當前時間3秒後的時間
        Timer timer = new Timer();
        //timer.schedule(task,calendar.getTime());
        //timer.schedule(task,calendar.getTime(),2000);
        //timer.schedule(task,2000);
        timer.schedule(task,2000,3000);
    }
}

相關推薦

Timer定時排程函式schedule用法Java

schedule的四種用法schedule(task,time)task-所安排的任務  time-執行任務的時間作用:在時間等於或者超過time的時候執行且僅執行一次import java.text.SimpleDateFormat; import java.util.Ca

概率分佈函式形式R

(1)The Normal Distribution Usage: dnorm(x, mean = 0, sd = 1, log = FALSE) pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm(p, mean = 0, 

兩個變數交換的方法Java

對於兩種變數的交換,我發現四種方法,下面我用Java來演示一下。 1.利用第三個變數交換數值,簡單的方法。 (程式碼演示一下) 1 class TestEV 2 //建立一個類 3 { 4 public static void main(String[]args) 5

SUMPRODUCT函式用法

SUMPRODUCT函式   在給定的幾組陣列中,將陣列間對應的元素相乘,並返回乘積之和。 語法   SUMPRODUCT(array1,array2,array3, ...)   Array1,array2,array3, ... 為 2 到 30 個數組,其相

js 時間轉換毫秒的方法

lpad 如果 class code 時間轉換 因此 ble string sha 將時間轉換為毫秒數的方法有四個: Date.parse()Date.UTCvalueOf()getTime() 1. Date.parse():該方法接受一個表示日期的字符串參數,然後嘗試

java建立執行緒的方法

java中建立執行緒的四種方法以及區別 Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或其子類的例項。Java可以用四種方式來建立執行緒,如下所示: 1)繼承Thread類建立執行緒 2)實現Runnable介面建立執行緒 3)使用Callable和Future建立執行緒

JS 獲取星期幾的寫法

今天是星期幾的4種JS程式碼寫法 第一種寫法  var str = ""; var week = new Date().getDay(); if (week == 0) { str = "今天是星期日"; } else if (week == 1)

詳解Java解析XML的方法轉載

出處:http://developer.51cto.com/art/200903/117512.htm XML現在已經成為一種通用的資料交換格式,它的平臺無關性,語言無關性,系統無關性,給資料整合與互動帶來了極大的方便。對於XML本身的語法知識與技術細節,需要閱讀相關的技術文獻,這裡

2_本地直播平臺的搭建—方式20181116

本地直播平臺的搭建—五種方式 方法一:Windows下用FFmpeg+nginx+rtmp搭建直播環境 實現推流、拉流 (`測試通過`) 環境 1. 簡介: 2. 準備檔案 3. 啟動nginx伺服器 4. 配置FFmpe

執行shell指令碼的方式

原文網址:https://www.jb51.net/article/53924.htm 這篇文章主要介紹了Linux中執行shell指令碼的4種方法,即總結在Linux中執行shell指令碼的4種方法。 前提:bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為

跨執行緒使用使用者介面的方法BackgroundThreadUpdateUI

namespace BackgroundThreadUpdateUI { // For Method Two public delegate void SetTextCallback(string text); public partial cl

C++執行緒同步的方式Windows

為什麼要進行執行緒同步?   在程式中使用多執行緒時,一般很少有多個執行緒能在其生命期內進行完全獨立的操作。更多的情況是一些執行緒進行某些處理操作,而其他的執行緒必須對其處理結果進行了解。正常情況下對這種處理結果的瞭解應當在其處理任務完成後進行。   如果不

android資料儲存的方案

檔案流操作 二.openFileOutput和openFileInput openFileOutput : 開啟要寫入的檔案,返回一個OutputStream物件 openFileInput:開啟

交換兩個變數的值,不借助第三個變數的方法學習

缺點:是隻能用於數字型別,字串之類的就不可以了。a+b有可能溢位(超出int的範圍),溢位是相對的, +了溢位了,-回來不就好了,所以溢位不溢位沒關係,就是不安全。2) 指標地址操作         因為對地址的操作實際上進行的是整數運算,比如:兩個地址相減得到一個整數,表示兩個變數在記憶體中的儲存位置隔了

android資料儲存的方案

讀寫Json格式的資料 json格式的資料我們經常用於網路與客戶端之間的資料交流,json相對於傳統的xml,更加簡潔,所以應用也越來越廣泛,也常被用於本地儲存 Android SDK用於讀寫JSON格式的資料的主要的兩個類:JsonWriter和JsonR

Spring配置資料來源的方式小結

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc

執行緒同步的方式

併發concurent與並行parallel的區別: 互斥物件 首先我們需要建立CreateMutex一把互斥物件,我們可以指明當前執行緒是否擁有它,互斥物件完全就像一把鑰匙一樣,我們用WaitForSignalObject來等待這把鑰匙,但是這把鑰匙被等到

python呼叫dll中特定函式的兩方式ctypes

1.直接使用函式名,函式名可以用dependency walker等工具檢視。 import ctypes dll = CTYPES.CDLL("test.dll") res = test(3, 4)

建立字串物件的六方法java

package javaBasic; public class StringConstruction { public static void main(String[] args) { String str0 = new String("HelloJava");//0.String(Str

二分查詢的兩實現Java

查詢過程 首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功