1、首先我們打開java編輯器,新建一個(gè)main函數(shù)
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),玄武網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:玄武等地區(qū)。玄武做網(wǎng)站價(jià)格咨詢:13518219792
2、接下來(lái)在main函數(shù)中聲明一個(gè)字符串
3、然后利用toCharArray()方法將字符串倒序,接下來(lái)循環(huán)輸出
4、最后我們執(zhí)行Java程序以后就可以得到倒序輸出的字符串了
new Thread(new Runnable() {
public void run() {
while(true) {
repaint();
Thread.sleep(500);
}
}
}).start();
這樣就沒(méi)錯(cuò)誤了。
要用延遲的話,不妨試試java.util.Timer().
new java.util.Timer().schedule(new TimerTask(){
public void run() {
//這里寫延遲后要運(yùn)行的代碼
repaint();
//如果只要這個(gè)延遲一次,用cancel方法取消掉.
this.cancel();
}}, 3000);
//參考參考java幫助文擋,也可以以固定間隔連續(xù)執(zhí)行.
有好幾種方法可以去實(shí)現(xiàn),隨便說(shuō)兩種思路
第一種:每次控制臺(tái)的Scanner方法收到一個(gè)字符時(shí),都啟動(dòng)一個(gè)3秒的定時(shí)器,并把上一個(gè)定時(shí)器取消
第二種:分兩個(gè)線程,一個(gè)接收輸入字符并記錄接收時(shí)間,一個(gè)每1秒循環(huán)一判斷一次已收到的字符時(shí)間并處理
多線程操作,如
運(yùn)行后的界面,繼承線程類,或繼承AsyncTask
在類的任務(wù)擴(kuò)展AsyncTask
保護(hù)無(wú)效的doInBackground(VOID ...參數(shù)){
調(diào)用Thread.sleep(1000);
}
保護(hù)無(wú)效onPostExecute(虛空結(jié)果){
result.setText(str.toString()); BR /
}
}
主線程“新”的任務(wù)()()內(nèi)的;
java中設(shè)置定時(shí)任務(wù)用Timer類可以實(shí)現(xiàn)。
一、延時(shí)執(zhí)行
首先,我們定義一個(gè)類,給它取個(gè)名字叫TimeTask,我們的定時(shí)任務(wù),就在這個(gè)類的main函數(shù)里執(zhí)行。代碼如下:
package test;
import java.util.Timer;
public class TimeTask {
public static void main(String[] args){
Timer timer = new Timer();
timer.schedule(new Task(), 60 * 1000);
}
}
解釋一下上面的代碼。
上面的代碼實(shí)現(xiàn)了這樣一個(gè)功能,當(dāng)TimeTask程序啟動(dòng)以后,過(guò)一分鐘后執(zhí)行某項(xiàng)任務(wù)。很簡(jiǎn)單吧:先new一個(gè)Timer對(duì)象,然后調(diào)用它的schedule方法,這個(gè)方法有四個(gè)重載的方法,這里我們用其中一個(gè),
public void schedule(TimerTask task,long delay)
首先,第一個(gè)參數(shù)
第一個(gè)參數(shù)就是我們要執(zhí)行的任務(wù)。
這是一個(gè)TimerTask對(duì)象,確切點(diǎn)說(shuō)是一個(gè)實(shí)現(xiàn)TimerTask的類的對(duì)象,因?yàn)門imerTask是個(gè)抽象類。上面的代碼里面,Task就是我們自己定義的實(shí)現(xiàn)了TimerTask的類,因?yàn)槭窃谕粋€(gè)包里面,所以沒(méi)有顯性的import進(jìn)來(lái)。Task類的代碼如下
package test;
import java.util.TimerTask;
public class Task extends TimerTask {
public void run(){
System.out.println("定時(shí)任務(wù)執(zhí)行");
}
}
我們的Task必須實(shí)現(xiàn)TimerTask的方法run,要執(zhí)行的任務(wù)就在這個(gè)run方法里面,這里,我們只讓它往控制臺(tái)打一行字。
第二個(gè)參數(shù)
第二個(gè)參數(shù)是一個(gè)long型的值。這是延遲的時(shí)間,就是從程序開始以后,再過(guò)多少時(shí)間來(lái)執(zhí)行定時(shí)任務(wù)。這個(gè)long型的值是毫秒數(shù),所以前面我們的程序里面,過(guò)一分鐘后執(zhí)行用的參數(shù)值就是 60 * 1000。
二、循環(huán)執(zhí)行
設(shè)置定時(shí)任務(wù)的時(shí)候,往往我們需要重復(fù)的執(zhí)行這樣任務(wù),每隔一段時(shí)間執(zhí)行一次,而上面的方法是只執(zhí)行一次的,這樣就用到了schedule方法的是另一個(gè)重載函數(shù)
public void schedule(TimerTask task,long delay,long period)
前兩個(gè)參數(shù)就不用說(shuō)什么了,最后一個(gè)參數(shù)就是間隔的時(shí)間,又是個(gè)long型的毫秒數(shù)(看來(lái)java里涉及到時(shí)間的,跟這個(gè)long是脫不了干系了),比如我們希望上面的任務(wù)從第一次執(zhí)行后,每個(gè)一分鐘執(zhí)行一次,第三個(gè)參數(shù)值賦60 * 1000就ok了。
三、指定執(zhí)行時(shí)間
既然號(hào)稱是定時(shí)任務(wù),我們肯定希望由我們來(lái)指定任務(wù)指定的時(shí)間,顯然上面的方法就不中用了,因?yàn)槲覀儾恢莱绦蚴裁磿r(shí)間開始運(yùn)行,就沒(méi)辦法確定需要延時(shí)多少。沒(méi)關(guān)系,schedule四個(gè)重載的方法還沒(méi)用完呢。用下面這個(gè)就OK了:
public void schedule(TimerTask task,Date time)
比如,我們希望定時(shí)任務(wù)2006年7月2日0時(shí)0分執(zhí)行,只要給第二個(gè)參數(shù)傳一個(gè)時(shí)間設(shè)置為2006年7月2日0時(shí)0分的Date對(duì)象就可以了。
有一種情況是,可能我們的程序啟動(dòng)的時(shí)候,已經(jīng)是2006年7月3日了,這樣的話,程序一啟動(dòng),定時(shí)任務(wù)就開始執(zhí)行了。
schedule最后一個(gè)重載的方法是
public void schedule(TimerTask task,Date firstTime,long period)
setTimeout()在js類中的使用方法
setTimeout (表達(dá)式,延時(shí)時(shí)間)
setTimeout(表達(dá)式,交互時(shí)間)
延時(shí)時(shí)間/交互時(shí)間是以豪秒為單位的(1000ms=1s)
setTimeout 在執(zhí)行時(shí),是在載入后延遲指定時(shí)間后,去執(zhí)行一次表達(dá)式,僅執(zhí)行一次
setTimeout 在執(zhí)行時(shí),它從載入后,每隔指定的時(shí)間就執(zhí)行一次表達(dá)式
1,基本用法:
執(zhí)行一段代碼:
var i=0;
setTimeout("i+=1;alert(i)",1000);
執(zhí)行一個(gè)函數(shù):
var i=0;
setTimeout(function(){i+=1;alert(i);},1000);
//注意比較上面的兩種方法的不同。
下面再來(lái)一個(gè)執(zhí)行函數(shù)的:
var i=0;
function test(){
i+=1;
alert(i);
}
setTimeout("test()",1000);
也可以這樣:
setTimeout(test,1000);
總結(jié):
setTimeout的原型是這樣的:
iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
setTimeout有兩種形式
setTimeout(code,interval)
setTimeout(func,interval,args)
其中code是一個(gè)字符串
func是一個(gè)函數(shù).
注意"函數(shù)"的意義,是一個(gè)表達(dá)式,而不是一個(gè)語(yǔ)句.
比如你想周期性執(zhí)行一個(gè)函數(shù)
function a(){
//...
}
可寫為
setTimeout("a()",1000)
或
setTimeout(a,1000)
這里注意第二種形式中,是a,不要寫成a(),切記!!!
展開來(lái)說(shuō),不管你這里寫的是什么,如果是一個(gè)變量,一定是一個(gè)指向某函數(shù)的變量;如果是個(gè)函數(shù),那它的返回值就 要是個(gè)函數(shù)
2,用setTimeout實(shí)現(xiàn)setInterval的功能
思路很簡(jiǎn)單,就是在一個(gè)函數(shù)中調(diào)用不停執(zhí)行自己,有點(diǎn)像遞歸
var i=0;
function xilou(){
i+=1;
if(i10){alert(i);return;}
setTimeout("xilou()",1000);
//用這個(gè)也可以
//setTimeout(xilou,1000);
}