1. 程式人生 > >java實現定時任務的三種方法

java實現定時任務的三種方法

/**
 * 普通thread
 * 這是最常見的,建立一個thread,然後讓它在while迴圈裡一直執行著,
 * 通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,程式碼如下:
 * @author GT
 *
 */
public class Task1 {
	public static void main(String[] args) {
		// run in a second
		final long timeInterval = 1000;
		Runnable runnable = new Runnable() {
			public void run() {
				while (true) {
					// ------- code for task to run
					System.out.println("Hello !!");
					// ------- ends here
					try {
						Thread.sleep(timeInterval);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		};
		Thread thread = new Thread(runnable);
		thread.start();
	}
}
import java.util.Timer;
import java.util.TimerTask;

/**
 * 
 * 於第一種方式相比,優勢 1>當啟動和去取消任務時可以控制 2>第一次執行任務時可以指定你想要的delay時間
 * 
 * 在實現時,Timer類可以排程任務,TimerTask則是通過在run()方法裡實現具體任務。 Timer例項可以排程多工,它是執行緒安全的。
 * 當Timer的構造器被呼叫時,它建立了一個執行緒,這個執行緒可以用來排程任務。 下面是程式碼:
 * 
 * @author GT
 * 
 */
public class Task2 {
	public static void main(String[] args) {
		TimerTask task = new TimerTask() {
			@Override
			public void run() {
				// task to run goes here
				System.out.println("Hello !!!");
			}
		};
		Timer timer = new Timer();
		long delay = 0;
		long intevalPeriod = 1 * 1000;
		// schedules the task to be run in an interval
		timer.scheduleAtFixedRate(task, delay, intevalPeriod);
	} // end of main
}

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

/**
 * 
 * 
 * ScheduledExecutorService是從Java SE5的java.util.concurrent裡,做為併發工具類被引進的,這是最理想的定時任務實現方式。 
 * 相比於上兩個方法,它有以下好處:
 * 1>相比於Timer的單執行緒,它是通過執行緒池的方式來執行任務的 
 * 2>可以很靈活的去設定第一次執行任務delay時間
 * 3>提供了良好的約定,以便設定執行的時間間隔
 * 
 * 下面是實現程式碼,我們通過ScheduledExecutorService#scheduleAtFixedRate展示這個例子,通過程式碼裡引數的控制,首次執行加了delay時間。
 * 
 * 
 * @author GT
 * 
 */
public class Task3 {
	public static void main(String[] args) {
		Runnable runnable = new Runnable() {
			public void run() {
				// task to run goes here
				System.out.println("Hello !!");
			}
		};
		ScheduledExecutorService service = Executors
				.newSingleThreadScheduledExecutor();
		// 第二個引數為首次執行的延時時間,第三個引數為定時執行的間隔時間
		service.scheduleAtFixedRate(runnable, 10, 1, TimeUnit.SECONDS);
	}
}

相關推薦

java實現定時任務方法

/** * 普通thread * 這是最常見的,建立一個thread,然後讓它在while迴圈裡一直執行著, * 通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,程式碼如下: * @author GT * */ public class Task

java實現定時任務的幾常用方法

/** * 普通thread * 這是最常見的,建立一個thread,然後讓它在while迴圈裡一直執行著, * 通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,程式碼如下: * @author TGY * */ public class Task

JAVA實現定時任務

col 時間 頻率 set 進行 con hour gettime test import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util

java實現定時任務 Schedule

exec use 關心 ted sun gets 只需要 默認 允許 1.java定時任務可以借助 java.util.Timer 來實現 [java] view plain copy import java.util.Calendar; import

Spring+Quartz實現定時任務的配置方法

detail 包含 範例 empty beans ref tail 可選 creat 1、Scheduler的配置 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&g

一、多執行緒基礎概念、實現執行緒方法、中斷執行緒方法,以及執行緒狀態轉化

1、CPU核心數和執行緒數的關係 1:1的關係,引入超執行緒之後,就是1:2 2、cpu時間輪轉機制,即RR排程 3、程序和執行緒 程序:程式執行資源分配最小單位,程序內部有多個執行緒,多個執行緒之間會共享程序資源 執行緒:CPU排程的最小單位 4、並行和併發

前端實現三角形的方法

直接貼程式碼行不行?我是個不善於表達的姑娘QAQ 第一種 HTML+CSS <div class="box"></div> <style> .box{

Java實現克隆的方式

1. 淺克隆      2. 深克隆     3. 利用序列化實現深克隆 1、淺複製(淺克隆)這種淺複製,其實也就是把被複制的這個物件的一些變數值拿過來了。最後生成student2還是一個新的物件。 public class

單鏈表實現反轉的方法

單鏈表的操作是面試中經常會遇到的問題,今天總結一下反轉的幾種方案: 1 ,兩兩對換 2, 放入陣列,倒置陣列 3, 遞迴實現 程式碼如下: #include<stdio.h> #include<malloc.h> typ

JAVA寫JSON的方法java物件轉json資料

今天給大家講一個物件、物件集合轉json資料的三種方法,三種方法最終達到的效果是一樣的。jsonlib:個人感覺最麻煩的一個需要匯入的包也多,程式碼也相對多一些。Gson:google的。FastJson:阿里巴巴的,個人覺得這個比較好,而且據說這個也是效能最好一個。下面就貼

java實現克隆的(很最全面)

1、淺複製(淺克隆)這種淺複製,其實也就是把被複制的這個物件的一些變數值拿過來了。最後生成student2還是一個新的物件。public class CloneTest1 { public static void main(String[] args) throws Exc

Java實現websocket 的兩方法

一.WebSocket簡單介紹  隨著網際網路的發展,傳統的HTTP協議已經很難滿足Web應用日益複雜的需求了。近年來,隨著HTML5的誕生,WebSocket協議被提出,它實現了瀏覽器與伺服器的全雙工通訊,擴充套件了瀏覽器與服務端的通訊功能,使服務端也能主動向客戶端傳送資料。  我們知道,傳統的HTTP協議

java 字串擷取的方法 推薦

                1.split()+正則表示式來進行擷取。 將正則傳入split()。返回的是一個字串陣列型別

Java字串分割的方法

 一、StringTokenizer方法 Java中substring方法可以分解字串,返回的是原字串的一個子字串。如果要講一個字串分解為一個一個的單詞或者標記,StringTokenizer可

java時間格式化的方法

使用fmt函式需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><fmt:formatDate value="${item.expDate}" pattern="yyyy-MM-dd"/>

實現servlet介面方法的區別

首先明確,Servlet並不是專門用於處理Http請求的。然後再說三種方式的聯絡和區別。1)原生Servlet介面package javax.servlet; import java.io.IOException; public interface Servlet { public void

Spring 3整合Quartz 2實現定時任務:動態暫停 恢復 修改和刪除任務

前面我們已經完成了spring 3和quartz 2的整合以及動態新增定時任務,我們接著來完善它,使之能支援更多的操作,例如暫停、恢復、修改等。 在動態新增定時任務中其實已經涉及到了其中的一些程式碼,這裡我們再來細化的理一理。先來看一下我們初步要實現的目標效果圖,這裡

在WEB應用下實現定時任務的簡便方法

 在WEB應用下實現定時任務的簡便方法   在web方式下,如果我們要實現定期執行某些任務的話,除了用quartz等第三方開源工具外,我們可以使用Timer和TimeTask來完成指定的定時任務:   第一步:建立一個任務管理類,實現ServletContextLis

RecyclerView實現addHeadView的方法原理說明和利弊分析(footHead同理)

介紹 上一篇部落格我分析了ListView的原始碼看Google是怎麼樣實現addHeadView的,原始碼的思路是對繫結在ListView的Adapter做轉換,在我們呼叫addHeadView的時候把已經寫好的BaseAdapter轉換成HeaderVie

java 載入類的方法

載入類的幾種方法 所有資源都通過ClassLoader載入到JVM裡,那麼在載入資源時當然可以使用ClassLoader,只是對於不同的資源還可以使用一些別的方式載入,例如對於類可以直接new,對於