手機(jī)網(wǎng)站建設(shè)開發(fā)搜索引擎大全網(wǎng)址
我們大家都對(duì)定時(shí)器不陌生,無論是現(xiàn)實(shí)中還是項(xiàng)目中,都離不開定時(shí)。在現(xiàn)實(shí)中,它叫鬧鐘,在項(xiàng)目上,它叫定時(shí)器,即定時(shí)觸發(fā)某件事情。它能幫助我們?cè)谀骋粋€(gè)既定的時(shí)間節(jié)點(diǎn)上,來提醒我們做一些事情,那么作為一個(gè)項(xiàng)目開發(fā)人員,你都會(huì)哪些語言來寫定時(shí)器呢?
不同語言下的定時(shí)器,你都掌握了嗎?
- 1、Java第三方工具
- 2、Java自帶類
- 3、JavaScript實(shí)現(xiàn)定時(shí)器
- 4、C語言實(shí)現(xiàn)定時(shí)器
- 5、Mysql實(shí)現(xiàn)定時(shí)器
- 6、Shell 實(shí)現(xiàn)定時(shí)器
- 7、Python實(shí)現(xiàn)定時(shí)器
1、Java第三方工具
利用Java實(shí)現(xiàn)定時(shí)器,現(xiàn)在項(xiàng)目中一般使用第三方比如 schedule 或者 xxl-job 等來處理,這里就先介紹使用第三方工具的寫法。
@Component
@EnableScheduling
public class Test {@Scheduled(cron = "*/3 * * * * ?")public void test() {int count = 0;System.out.printf(count + ": " + new Date());count++;}}
2、Java自帶類
其實(shí)我們?nèi)~可以使用Java 的 SDK 自帶的 Timer 類,來實(shí)現(xiàn)定時(shí)器功能:
public class Test {public static void main(String[] args) {// 定義一個(gè)任務(wù)TimerTask stepTimerTask = new TimerTask() {@Overridepublic void run() {System.out.println("運(yùn)行定時(shí)Step任務(wù):" + new Date());System.out.println("運(yùn)行Step完畢");}};// 計(jì)時(shí)器Timer timer = new Timer();// 添加執(zhí)行任務(wù)(延遲1s執(zhí)行,每三秒執(zhí)行一次)timer.schedule(stepTimerTask, 1000, 3000);}
}
3、JavaScript實(shí)現(xiàn)定時(shí)器
我們也可以使用JavaScript來實(shí)現(xiàn)延時(shí)定時(shí)器
var t2 = window.setInterval(function() {console.log(‘每隔3秒鐘執(zhí)行一次’)},1000)//清除定時(shí)器
window.clearInterval(t2)
4、C語言實(shí)現(xiàn)定時(shí)器
我們也可以使用C語言來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的定時(shí)器。
void timer(long time){clock_t start;long count = 1;start = clock();while(1){if((clock() - start) != (time*CLOCKS_PER_SEC)){//時(shí)間沒有到,啥也不做,空循環(huán)}else {//時(shí)間到了退出循環(huán)// printf("%s","hello");break;}}
}
int main( void )
{for(int i=0;i<10;i++){timer(1);printf("%d\n",i);}getch();
}
5、Mysql實(shí)現(xiàn)定時(shí)器
我們?cè)谑褂肕ysql的時(shí)候,有時(shí)也會(huì)使用MySql自帶的定時(shí)器,來定時(shí)執(zhí)行sql語句:
例如:
-- 每天0點(diǎn)執(zhí)行
create event if not EXISTS my_monitor
on schedule every 1 DAY STARTS date(CURRENT_DATE+1)
on completion preserve do call insert_monitor();
當(dāng)然還需要做一些前期的準(zhǔn)備工作,比如開啟Mysql的定時(shí)策略,創(chuàng)建存儲(chǔ)函數(shù)等等,這里就不介紹了。
6、Shell 實(shí)現(xiàn)定時(shí)器
有時(shí)候,我們也會(huì)在Linux上來實(shí)現(xiàn)定時(shí)腳本,來定時(shí)執(zhí)行一些任務(wù):
首先我們需要一個(gè)執(zhí)行的內(nèi)容腳本,例如:test.sh:
echo "測(cè)試" >> /test
echo "執(zhí)行時(shí)間為`date` " >> /test
然后使用 crontab -e
命令進(jìn)入定時(shí)編輯
*/1 * * * * sh /test/test.sh
7、Python實(shí)現(xiàn)定時(shí)器
Python和Java實(shí)現(xiàn)定時(shí)器一樣,有多種方式,這里就只介紹Python原生實(shí)現(xiàn)定時(shí)器:
def task():now = datetime.now()ts = now.strftime("%Y-%m-%d %H:%M:%S")print(ts)def fun():while True:task()time.sleep(3)fun()