import java.util.Timer;
創(chuàng)新互聯(lián)建站專注于阿勒泰企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。阿勒泰網(wǎng)站建設(shè)公司,為阿勒泰等地區(qū)提供建站服務(wù)。全流程按需設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
import java.util.TimerTask;
public class Test extends TimerTask {
public static void main(String[] args) {
Timer timer = new Timer();
Test t=new Test();
//程序運行后立刻執(zhí)行任務(wù),每隔1000ms執(zhí)行一次
timer.schedule(t, 0, 1000);
}
@Override
public void run() {
System.out.println("在此處調(diào)用插入數(shù)據(jù)庫的方法");
}
}
我是讓它每10毫秒掃描一下。
Calendar ca=null;
Calendar ca1=null;
Timer timer=new Timer();
static Connection con=null;
public void chu(){
ca=Calendar.getInstance();
ca1=(Calendar)ca.clone();
ca1.add(Calendar.SECOND, 20);
}
public void Time(){
float s=ca1.get(Calendar.SECOND)-ca.get(Calendar.SECOND)+(ca1.get(Calendar.MILLISECOND)-ca.get(Calendar.MILLISECOND))/1000f;
if(con==null){
System.out.println("耗時"+String.valueOf(s)+"秒");
if(ca.after(ca1)){
System.out.println("取不到連接");
timer.cancel();
return ;
}
}else{
System.out.println("耗時"+String.valueOf(s)+"秒");
}
ca.add(Calendar.MILLISECOND, 10);
timer.schedule(
new TimerTask() {
public void run() {
System.out.println("時間在溜走。。。。");
Time();
}
}, ca.getTime());
}
void getcon(){
Connection con=null;//獲取Connection
chu();
Time();
}
import?java.util.Random;
import?java.util.Timer;
import?java.util.TimerTask;
public?class?MainEntry?{
private?int?a;
public?void?setVal(){
Timer?timer?=?new?Timer();
//每隔一秒生成一個[1,100)內(nèi)的隨機整數(shù),賦給成員a
timer.schedule(new?TimerTask()?{?
@Override
public?void?run()?{
Random?rand?=?new?Random();
setA(rand.nextInt(100));
}
},?1000);
}
public?void?setA(int?a)?{
this.a?=?a;
}
public?int?getA()?{
return?a;
}
public?static?void?main(String[]?args)?{
MainEntry?me?=?new?MainEntry();
me.setVal();
}
}
1、scheduleUpdate
加入當前節(jié)點后,程序會每幀都會自動執(zhí)行一次默認的Update函數(shù)。(注:一定是Update函數(shù)哦,若想調(diào)用其他自己命名的函數(shù)則使用schedule)
看例子,走起。
首先在HelloWord類的頭文件中聲明Update函數(shù):
[cpp] view plain copy print?
void update(float dt); //注意參數(shù)類型
然后在HelloWorld類源文件中實現(xiàn)函數(shù)Update:
[cpp] view plain copy print?
void HelloWorld::update(float dt)
{
CCLOG("baibai");
}
現(xiàn)在我們可以調(diào)用了,在需要他不斷執(zhí)行的地方加入調(diào)用的代碼就ok:
[cpp] view plain copy print?
this-scheduleUpdate(); //this是當前節(jié)點,如layer,所以可以省略啦。
運行之后你將會看到不斷有baibai被打印出來
2、scheduleUpdate
可以沒隔幾秒執(zhí)行某個自定義的函數(shù),來看代碼:
首先還是在HelloWorld中聲明所要執(zhí)行的函數(shù):
java定時器的使用(Timer)
1、在應(yīng)用開發(fā)中,經(jīng)常需要一些周期性的操作,比如每5分鐘執(zhí)行某一操作等。
對于這樣的操作最方便、高效的實現(xiàn)方式就是使用java.util.Timer工具類。
private java.util.Timer timer;
timer = new Timer(true);
timer.schedule(
new java.util.TimerTask() { public void run()
{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);
第一個參數(shù)是要操作的方法,第二個參數(shù)是要設(shè)定延遲的時間,第三個參
數(shù)是周期的設(shè)定,每隔多長時間執(zhí)行該操作。
使用這幾行代碼之后,Timer本身會每隔5分鐘調(diào)用一遍
server.checkNewMail()方法,不需要自己啟動線程。Timer本身也是多線程同
步的,多個線程可以共用一個Timer,不需要外部的同步代碼。
2、
(1)Timer.schedule(TimerTask task,Date time)安排在制定的時間執(zhí)行指定的
任務(wù)。
(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定
的任務(wù)在指定的時間開始進行重復(fù)的固定延遲執(zhí)行.
(3)Timer.schedule(TimerTask task,long delay)安排在指定延遲后執(zhí)行指定的
任務(wù).
(4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任務(wù)
從指定的延遲后開始進行重復(fù)的固定延遲執(zhí)行.
(5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
安排指定的任務(wù)在指定的時間開始進行重復(fù)的固定速率執(zhí)行.
(6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)安
排指定的任務(wù)在指定的延遲后開始進行重復(fù)的固定速率執(zhí)行.
用Java Timer API 進行時間調(diào)度開發(fā)的相關(guān)注意點
java.util這個包中可以找到Timer和TimerTask這兩個類。Timer直接從Object
繼承,它相當于一個計時器,能夠用它來指定某個時間來執(zhí)行一項任務(wù),或者
每隔一定時間間隔反復(fù)執(zhí)行同一個任務(wù)。創(chuàng)建一個Timer后,就會生成一個線程
在背后運行,來控制任務(wù)的執(zhí)行。而TimerTask就是用來實現(xiàn)某項任務(wù)的類,
它實現(xiàn)了Runnable接口,因此相當于一個線程。
setTimeout()函數(shù)
JavaScript函數(shù)是單線程執(zhí)行的,假如說到了setTimeout函數(shù)設(shè)置的時間了,它就把代碼插入執(zhí)行隊列,如果這個隊列沒有執(zhí)行的代碼,那就立即執(zhí)行定時器代碼,如果有正在執(zhí)行的代碼那么就要等到代碼執(zhí)行完畢后才執(zhí)行定時器代碼。這就意味并不是在定時器時間到了就立即執(zhí)行代碼而是把代碼添加到執(zhí)行隊列。
setInterval()函數(shù)
假如設(shè)置的時間間隔為100ms,但是執(zhí)行定時器代碼需要300毫秒,這樣在程序執(zhí)行到100毫秒的時候,定時器到時了,這時在執(zhí)行隊列中添加另外一個定時器代碼副本。當?shù)谝粋€定時器代碼運行到200毫秒時,定時器又到時,但是第一個定時器代碼正在執(zhí)行而且執(zhí)行隊列已經(jīng)有一個定時器副本了,所以這次的定時器代碼不會被添加到執(zhí)行隊列中。這樣當?shù)谝粋€定時器代碼執(zhí)行結(jié)束后,第二個定時器代碼就會立即執(zhí)行,沒有達到間隔的效果。可以用以下代碼來避免這種結(jié)果(來自javascript高級編程第二版)
setTimeout(function()
{
//處理代碼
setTimeout(arguments.callee,interval);
},interval);
這個模式下,每次執(zhí)行定時器都會創(chuàng)建一個新的定時器。第二個setTimeout通過調(diào)用arguments.callee來獲取當前函數(shù)的引用,并設(shè)置另一個定時器。這就確保了第一個定時器代碼執(zhí)行完畢前不會向隊列插入新的定時器代碼,也不會有缺失時間間隔。
當前題目:java定時器代碼,定時器 Java
網(wǎng)站路徑:http://chinadenli.net/article8/phjjip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、小程序開發(fā)、軟件開發(fā)、網(wǎng)站策劃、、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)