Rumah Java javaTutorial Java 中定时器和定时任务使用的实例

Java 中定时器和定时任务使用的实例

May 16, 2017 am 09:55 AM
timertask tugas yang dijadualkan

这篇文章主要介绍了Java 中Timer和TimerTask 定时器和定时任务使用的例子,非常具有实用价值,需要的朋友可以参考下

这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求

Timer类是用来执行任务的类,它接受一个TimerTask做参数

Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率

TimerTest.Java:

package com.cn; 
import java.io.IOException; 
import java.util.Timer; 
  
public class TimerTest{   
      
  public static void main(String[] args){   
    Timer timer = new Timer();   
    timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒执行一次,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.   
    while(true){//这个是用来停止此任务的,否则就一直循环执行此任务   
      try{   
        int in = System.in.read();  
        if(in == 's'){   
          timer.cancel();//使用这个方法退出任务   
          break; 
        }   
      } catch (IOException e){   
        // TODO Auto-generated catch block   
        e.printStackTrace();   
      }   
    }   
  }  
   
  static class MyTask extends java.util.TimerTask{   
    public void run(){   
      System.out.println("");   
    }   
  }  
}
Salin selepas log masuk

此类运行时:

程序启动1秒后在控制台打印“————”
间隔两秒后接着执行MyTask的run()方法,打印“————”
这样一直循环
当在控制台输入s字符时,timer定时器取消工作
跳出整个循环
程序运行结束!

TimerTest2.java:

package com.cn; 
 
import java.io.IOException; 
import java.util.Date; 
import java.util.Timer; 
 
public class TimerTest2{   
    
  public static void main(String[] args){   
    Timer timer = new Timer();   
    MyTask myTask1 = new MyTask();   
    MyTask myTask2 = new MyTask();   
    myTask2.setInfo("myTask-info-2");   
     
    timer.schedule(myTask1, 1000, 2000); //任务1 一秒钟后执行,每两秒执行一次。  
    timer.scheduleAtFixedRate(myTask2, 2000, 3000);  //任务2 2秒后开始进行重复的固定速率执行(3秒钟重复一次) 
     
    while (true){   
      try{   
        //用来接收键盘输入的字符串 
        byte[] info = new byte[1024];   
        int len = System.in.read(info);  
         
        String strInfo = new String(info, 0, len, "GBK");//从控制台读出信息   
         
        if (strInfo.charAt(strInfo.length() - 1) == ' '){   
          strInfo = strInfo.substring(0, strInfo.length() - 2);   
        }  
         
        if (strInfo.startsWith("Cancel-1")){   
          myTask1.cancel();//退出任务1   
          // 其实应该在这里判断myTask2是否也退出了,是的话就应该break.但是因为无法在包外得到   
          // myTask2的状态,所以,这里不能做出是否退出循环的判断.   
        } else if (strInfo.startsWith("Cancel-2")){   
          myTask2.cancel(); //退出任务2  
        } else if (strInfo.startsWith("Cancel-All")){   
          timer.cancel();//退出Timer   
          break;   
        } else{   
          // 只对myTask1作出判断,偷个懒^_^   
          myTask1.setInfo(strInfo);   
        }   
      } catch (IOException e){   
        // TODO Auto-generated catch block   
        e.printStackTrace();   
      }   
    }   
  }   
  
  static class MyTask extends java.util.TimerTask{   
     
    String info = "INFO"; 
  
    @Override   
    public void run(){   
      // TODO Auto-generated method stub   
      System.out.println(new Date() + "   " + info);   
    }   
  
    public String getInfo(){   
      return info;   
    }   
    public void setInfo(String info){   
      this.info = info;   
    }   
  }   
   
}
Salin selepas log masuk

此类创建了两个定时任务mytask1和mytask2

mytask1任务和上面的TimerTest类中的例子用法一样。即安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

mytask2任务就不同于上面的用法了,timer.scheduleAtFixedRate它是用的timer定时器的scheduleAtFixedRate()方法来执行。

scheduleAtFixedRate()方法在API1.6.0中是这样定义的:

安排指定的任务在指定的时间开始进行重复的固定速率执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。

近似固定的时间间隔的意思是说:在固定速率执行中,相对于已安排的初始执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则将快速连续地出现两次或更多次执行,从而使后续执行能够赶上来。

Timer类的常用其他方法:

cancel()

终止此计时器,丢弃所有当前已安排的任务。

purge()

从此计时器的任务队列中移除所有已取消的任务。

schedule(TimerTask task, Date time)

安排在指定的时间执行指定的任务。

TimerTask类的常用其他方法:

cancel()

取消此计时器任务。

run()

此计时器任务要执行的操作。

scheduledExecutionTime()

返回此任务最近实际 执行的已安排 执行时间。

【相关推荐】

1. 特别推荐“php程序员工具箱”V0.1版本下载

2. Java免费视频教程

3. JAVA教程手册

Atas ialah kandungan terperinci Java 中定时器和定时任务使用的实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah anda tahu beberapa sebab mengapa tugas berjadual crontab tidak dilaksanakan? Adakah anda tahu beberapa sebab mengapa tugas berjadual crontab tidak dilaksanakan? Mar 09, 2024 am 09:49 AM

Ringkasan beberapa sebab mengapa tugas berjadual crontab tidak dilaksanakan Masa kemas kini: 9 Januari 2019 09:34:57 Penulis: Harapan di medan ini terutamanya meringkaskan dan memperkenalkan kepada anda beberapa sebab mengapa tugas berjadual crontab tidak dilaksanakan setiap orang Penyelesaian diberikan untuk setiap pencetus yang mungkin, yang mempunyai rujukan dan nilai pembelajaran tertentu untuk rakan sekerja yang menghadapi masalah ini. Pelajar yang memerlukan boleh mengikuti editor untuk belajar bersama-sama: Saya telah menghadapi beberapa masalah di tempat kerja yang dijadualkan tugas tidak dilaksanakan Kemudian, apabila saya mencari di Internet, saya mendapati bahawa Internet terutamanya menyebut lima insentif ini: 1. Perkhidmatan crontab bukan fungsi kernel Linux, tetapi bergantung pada cron.

Penjadualan tugas berjadual ThinkPHP6: pelaksanaan tugas berjadual Penjadualan tugas berjadual ThinkPHP6: pelaksanaan tugas berjadual Aug 12, 2023 pm 03:28 PM

Penjadualan tugas berjadual ThinkPHP6: pelaksanaan tugas berjadual 1. Pengenalan Dalam proses pembangunan aplikasi web, kita sering menghadapi situasi di mana tugas berulang tertentu perlu dilaksanakan dengan kerap. ThinkPHP6 menyediakan fungsi penjadualan tugas berjadual yang berkuasa, yang boleh memenuhi keperluan tugas berjadual dengan mudah. Artikel ini akan memperkenalkan cara menggunakan penjadualan tugas berjadual dalam ThinkPHP6 dan menyediakan beberapa contoh kod untuk membantu memahami. 2. Konfigurasikan tugas berjadual, buat fail tugas berjadual dan buat koman dalam direktori aplikasi projek.

Python melaksanakan penyegaran halaman automatik dan analisis fungsi tugas berjadual untuk aplikasi pengumpulan pelayar tanpa kepala Python melaksanakan penyegaran halaman automatik dan analisis fungsi tugas berjadual untuk aplikasi pengumpulan pelayar tanpa kepala Aug 08, 2023 am 08:13 AM

Python melaksanakan penyegaran halaman automatik dan analisis fungsi tugas berjadual untuk aplikasi pengumpulan pelayar tanpa kepala Dengan perkembangan pesat rangkaian dan pempopularan aplikasi, pengumpulan data halaman web menjadi semakin penting. Pelayar tanpa kepala adalah salah satu alat yang berkesan untuk mengumpul data halaman web. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan penyegaran halaman automatik dan fungsi tugas berjadual pelayar tanpa kepala. Pelayar tanpa kepala menggunakan mod operasi penyemak imbas tanpa antara muka grafik, yang boleh mensimulasikan tingkah laku operasi manusia secara automatik, dengan itu membolehkan pengguna mengakses halaman web, mengklik butang dan mengisi maklumat.

Cara menggunakan PHP untuk membangunkan fungsi penyegaran berjadual untuk halaman web Cara menggunakan PHP untuk membangunkan fungsi penyegaran berjadual untuk halaman web Aug 17, 2023 pm 04:25 PM

Cara menggunakan PHP untuk membangunkan fungsi penyegaran berjadual untuk halaman web Dengan perkembangan Internet, semakin banyak laman web perlu mengemas kini data paparan dalam masa nyata. Muat semula halaman dalam masa nyata adalah keperluan biasa, yang membolehkan pengguna mendapatkan data terkini tanpa memuat semula keseluruhan halaman. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan fungsi muat semula berjadual untuk halaman web dan menyediakan contoh kod. Cara paling mudah untuk melaksanakan muat semula berjadual menggunakan teg Meta ialah menggunakan teg Meta HTML untuk menyegarkan halaman dengan kerap. Dalam HTML<head>

Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang Jul 28, 2023 pm 02:22 PM

Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang Dengan perkembangan pesat aplikasi Internet, banyak aplikasi mempunyai beberapa tugas latar belakang yang perlu dilaksanakan dengan kerap, seperti pembersihan data, penghantaran e-mel, sandaran, dsb. Untuk menyelesaikan masalah ini, kami boleh menggunakan tugas berjadual untuk melaksanakan kerja latar belakang secara automatik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan tugas berjadual dalam rangka kerja FastAPI untuk melaksanakan kerja latar belakang. FastAPI ialah rangka kerja web moden, pantas (berprestasi tinggi) yang digunakan terutamanya untuk membina API. ia mempunyai

Bagaimana untuk melaksanakan penjadualan tugas dan tugas berjadual dalam PHP? Bagaimana untuk melaksanakan penjadualan tugas dan tugas berjadual dalam PHP? May 12, 2023 pm 06:51 PM

Dalam pembangunan web, banyak tapak web dan aplikasi perlu melaksanakan tugas tertentu dengan kerap, seperti membersihkan data sampah, menghantar e-mel, dsb. Untuk mengautomasikan tugasan ini, pembangun perlu melaksanakan penjadualan tugas dan fungsi tugas bermasa. Artikel ini akan memperkenalkan cara melaksanakan penjadualan tugas dan tugasan bermasa dalam PHP, serta beberapa perpustakaan dan alatan pihak ketiga yang biasa digunakan. 1. Penjadualan Tugas Penjadualan tugas merujuk kepada melaksanakan tugasan tertentu mengikut masa atau peristiwa yang ditetapkan. Dalam PHP, pemasa cron atau mekanisme serupa boleh digunakan untuk melaksanakan penjadualan tugas. Biasanya, penjadualan tugas

Pelaksanaan tugas berjadual PHP: langkah untuk membatalkan pesanan setiap 10 minit Pelaksanaan tugas berjadual PHP: langkah untuk membatalkan pesanan setiap 10 minit Mar 01, 2024 pm 09:18 PM

Tajuk: Pelaksanaan tugas berjadual PHP: Langkah operasi untuk membatalkan pesanan setiap 10 minit Dalam platform e-dagang atau tapak web dagangan dalam talian, pemprosesan pesanan ialah pautan penting. Kadangkala pengguna mungkin tidak membayar untuk masa yang lama selepas membuat pesanan, atau pesanan itu perlu dibatalkan atas sebab lain. Untuk membatalkan pesanan secara automatik, kami boleh menggunakan tugas berjadual PHP untuk menyemak pesanan dan membatalkannya setiap 10 minit. Berikut ialah langkah operasi dan contoh kod khusus: Langkah 1: Sediakan tugas berjadual Pertama, kita perlu menyediakan tugas berjadual pada pelayan untuk membiarkan

Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI Jul 30, 2023 pm 03:53 PM

Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI Pengenalan: FastAPI ialah rangka kerja Python moden dan berprestasi tinggi yang memfokuskan pada membina aplikasi API. Walau bagaimanapun, kadangkala kita perlu melaksanakan tugas berjadual dan tugas berkala dalam aplikasi FastAPI. Artikel ini menerangkan cara melaksanakan tugas ini dalam aplikasi FastAPI dan menyediakan contoh kod yang sepadan. 1. Pelaksanaan tugas berjadual menggunakan perpustakaan APScheduler APScheduler ialah fungsi

See all articles