日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java定时器写法_java定时器的写法是什么样?

發布時間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java定时器写法_java定时器的写法是什么样? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定時器的用法是java核心基礎之一,很多特殊功能都需要用到定時器,下面一起來看看定時器是如何編寫的吧。

示例:一個具備周期性定時(毫秒級);單時刻定時(秒級);多時刻定時(秒級)。后兩個時間的設置必須符合“yyyy-MM-dd

HH:mm:ss”、“yyyy-MM-dd ”、“HH:mm:ss”、“HH:mm”、“yyyy-MM-dd HH”、“yyyy-MM-dd

HH:mm”格式的定時器

Java代碼//TimerTask代碼

import?java.text.SimpleDateFormat;

import?java.util.Date;

import?java.util.List;

public?abstract?class?TimerTask?implements?Runnable

{

private?long?period?=?-1;

private?String?time;

private?List??timeList;

private?boolean?isCancel?=?false;

private?boolean?isFormart?=?false;

public?long?getPeriod()

{

return?period;

}

public?void?setPeriod(long?period)

{

this.period?=?period;

}

public?void?setTime(String?time)

{

this.time?=?time;

}

public?String?getTime()

{

return?time;

}

public?List??getTimeList()

{

return?timeList;

}

public?void?setTimeList(List??timeList)

{

this.timeList?=?timeList;

}

public?void?cancel()

{

this.isCancel?=?true;

}

public?boolean?isCancel()

{

return?isCancel;

}

public?abstract?void?execute();

public?void?run()

{

//格式化傳入的日期或日期時間或時間參數

if?(!this.isFormart)

{

this.fomart();

}

//確保指定的運行點在一秒鐘內只運行一次

boolean?isRun?=?false;

//確保多個運行點中,每個運行點在一秒鐘內只運行一次

int?flag[]?=?null;

try

{

flag?=?new?int[this.timeList.size()];

}

catch?(Exception?e)

{}

SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");

//當沒有被取消時

while?(!isCancel)

{

String?dt?=?sdf.format(new?Date());

if?(this.period?>?0)

{

try

{

Thread.sleep(this.period);

}

catch?(Exception?e)

{}

this.execute();

}

else?if?(this.time?!=?null)

{

if?(this.time.indexOf("-")?>?0)

{

if?(this.time.equals(dt)?&&?!isRun)

{

isRun?=?true;

this.execute();

}

}

else

{

if?(this.time.equals(dt.substring(11))?&&?!isRun)

{

isRun?=?true;

this.execute();

}

}

}

else?if?(this.timeList?!=?null)

{

int?loopIndex?=?0;

for?(String?dateTime:?this.timeList)

{

if?(dateTime.indexOf("-")?>?0)

{

if?(dateTime.equals(dt)?&&?flag[loopIndex]?==?0)

{

this.execute();

flag[loopIndex]?=?1;

}

}

else

{

if?(dateTime.equals(dt.substring(11))?&&?flag[loopIndex]?==?0)

{

this.execute();

flag[loopIndex]?=?1;

}

}

++loopIndex;

}

}

}

}

private?void?fomart()

{

if?(!this.isFormart)

{

if?(this.time?!=?null)

{

this.time?=?this.format(this.time);

}

if?(this.timeList?!=?null)

{

for?(int?i?=?0;?i?

{

String?dateTime?=?this.timeList.get(i);

if?(dateTime?!=?null)

{

this.timeList.set(i,?format(dateTime));

}

}

}

}

else

{

this.isFormart?=?true;

}

}

private?String?format(String?datetime)

{

if?(datetime?!=?null)

{

//?是否含有減號

boolean?hasSubtrSign?=?datetime.contains("-");

//?是否含有冒號

boolean?hasColonSign?=?datetime.contains(":");

//?12-23?12:33

if?(hasSubtrSign?==?true?&&?hasColonSign?==?true)

{

datetime?=?DateUtil.formatToEnglish(datetime);

}

else?if?(hasSubtrSign?&&?hasColonSign?==?false)

{

datetime?=?DateUtil.formatToEnglish(datetime);

}

else?if?(hasSubtrSign?==?false?&&?hasColonSign)

{

datetime?=?DateUtil.formatToEnglish(datetime)

.substring(11);

}

}

return?datetime;

}

}

///

//Timer代碼

import?java.util.ArrayList;

public?class?Timer?extends?Thread

{

private?boolean?isStart?=?false;

private?boolean?isCannel?=?false;

ArrayList??tasks?=?new?ArrayList??();

public?Timer()

{}

public?void?cancel()

{

this.isCannel?=?true;

}

public?boolean?isCannel()

{

return?isCannel;

}

public?void?schedule(TimerTask?task,?long?period)

{

task.setPeriod(period);

//添加任務

this.addTask(task);

}

public?void?schedule(TimerTask?task,?long?delay,?long?period)

{

try

{

Thread.sleep(delay);

}

catch?(Exception?e)

{}

task.setPeriod(period);

//添加任務

this.addTask(task);

}

public?void?schedule(TimerTask?task,?String?time)

{

task.setTime(time);

//添加任務

this.addTask(task);

}

public?void?schedule(TimerTask?task,?long?delay,?String?time)

{

try

{

Thread.sleep(delay);

}

catch?(Exception?e)

{}

task.setTime(time);

//添加任務

this.addTask(task);

}

public?void?schedule(TimerTask?task,?java.util.List??timeList)

{

task.setTimeList(timeList);

//添加任務

this.addTask(task);

}

public?void?schedule(TimerTask?task,?long?delay,?java.util.List??timeList)

{

try

{

Thread.sleep(delay);

}

catch?(Exception?e)

{}

task.setTimeList(timeList);

//添加任務

this.addTask(task);

}

//添加任務

private?void?addTask(TimerTask?task)

{

boolean?isExist?=?false;

for?(TimerTaskBean?ttBean:?this.tasks)

{

if?(task.equals(ttBean.getTask()))

{

isExist?=?true;

break;

}

else

{

isExist?=?false;

}

}

if?(!isExist)

{

tasks.add(new?TimerTaskBean(task,?false));

}

//判斷定時器線程是否啟動

if?(!this.isStart)

{

this.start();

this.isStart?=?true;

}

}

public?void?run()

{

//?是否取消所有任務的定時功能

while?(!this.isCannel)

{

for?(int?i?=?0;?i?

{

TimerTaskBean?ttBean?=?tasks.get(i);

//判斷是否開始運行

if?(ttBean?!=?null?&&?!ttBean.isRun())

{

ttBean.setRun(true);

new?Thread(ttBean.getTask())

.start();

}

}

}

//當取消定時器時,取消所有任務

if?(this.isCannel)

{

for?(TimerTaskBean?ttBean:?tasks)

{

ttBean.getTask()

.cancel();

}

}

}

class?TimerTaskBean

{

public?TimerTaskBean()

{}

public?TimerTaskBean(TimerTask?task,?boolean?isRun)

{

this.task?=?task;

this.isRun?=?isRun;

}

private?boolean?isRun?=?false;

private?TimerTask?task?=?null;

public?boolean?isRun()

{

return?isRun;

}

public?void?setRun(boolean?isRun)

{

this.isRun?=?isRun;

}

public?TimerTask?getTask()

{

return?task;

}

public?void?setTask(TimerTask?task)

{

this.task?=?task;

}

}

}

//TimerTest代碼

import?java.util.ArrayList;

public?class?TimerTest

{

public?static?void?main(String[]?args)

{

Timer?t?=?new?Timer();

T1?t1?=?new?T1();

T2?t2?=?new?T2();

t.schedule(t1,?1000);

ArrayList??list?=?new?ArrayList??();

list.add("11:44:30");

list.add("11:44:31");

list.add("11:44:32");

list.add("11:44:33");

list.add("11:44:34");

list.add("11:44:35");

list.add("11:44:36");

list.add("11:44:37");

t.schedule(t1,?list);

try

{

Thread.sleep(1000?*?4);

}

catch?(Exception?e)

{}

t1.cancel();?//取消任務1,任務2線程停止

t.schedule(t2,?1000);

t.schedule(t2,?list);

try

{

Thread.sleep(1000?*?4);

}

catch?(Exception?e)

{}

t2.cancel();?//取消任務2,任務2線程停止

try

{

Thread.sleep(1000?*?4);

}

catch?(Exception?e)

{}

t.cancel();?//取消定時器,定時器線程停止

}

}

class?T1?extends?TimerTask

{

public?T1()

{}

public?void?execute()

{

System.out.println(11111111);

}

}

class?T2?extends?TimerTask

{

public?T2()

{}

public?void?execute()

{

System.out.println(22222222);

}

}

以上就是今天的全部內容,想知道更多詳細java基礎知識就請繼續關注我們了解詳情吧。

推薦閱讀:

總結

以上是生活随笔為你收集整理的java定时器写法_java定时器的写法是什么样?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品视频在线观看免费 | 欧美熟妇另类久久久久久多毛 | 老头老太做爰xxx视频 | 91av视频在线免费观看 | 日韩性猛交ⅹxxx乱大交 | 91国偷自产一区二区三区老熟女 | 亚洲天堂一区二区在线观看 | 国内自拍视频在线播放 | va视频在线观看 | 性生活三级视频 | 中文字幕在线网 | 久久久一级黄色片 | www久久99 | 爱情岛论坛成人 | 国产精品一二区 | 中文字幕在线导航 | www.亚洲人| 白丝一区 | 国产欲妇 | 91在线播放视频 | 亚洲精品一区二区三区蜜臀 | 射黄视频| 日韩中文字幕在线观看视频 | 国产区精品区 | 国产伦精品一区二区三区视频痴汉 | 成人在线观看91 | 亲子伦视频一区二区三区 | 欧美午夜精品久久久久久浪潮 | 中文字幕久久网 | 伊人久久国产精品 | 亚洲精品女人久久久 | 欧美精品欧美极品欧美激情 | 亚洲一区二区免费 | 色婷婷综合久久久久中文字幕 | 一本色道久久88综合日韩精品 | 欧美日韩一区二区三区免费 | 免费啪视频在线观看 | 91久久精品视频 | 男人激烈吮乳吃奶爽文 | 国产欧美日韩高清 | 亚洲高清精品视频 | 蜜桃在线一区 | 扒下小娇妻的内裤打屁股 | 中文字幕在线观 | 五月视频| 人人爽人人爽人人 | 稀缺小u女呦精品呦 | 新天堂av | 蜜桃av噜噜一区二区三区网址 | 卡通动漫精品一区二区三区 | 久久亚洲精精品中文字幕早川悠里 | 亚洲第一页av | 99一级片 | 久久蜜桃av一区二区天堂 | 亚洲av乱码一区二区 | 日韩一级大片 | 精品国产18久久久久久二百 | 蜜臀av性久久久久蜜臀av麻豆 | 国产成人无码a区在线观看视频 | 精品视频在线观看一区二区 | 在线青草 | 伊人久久久久久久久 | 国产wwwwww| 国产成人综合在线观看 | 男女黄床上色视频免费的软件 | 欧美一区二三区 | 找av导航 | 国产精品毛片一区二区三区 | 成人av一区二区三区 | 日本边添边摸边做边爱 | 久久国产黄色片 | 久久伊人在 | 少妇视频在线播放 | 国产区小视频 | 午夜精品久久久久久久久 | 在线看片你懂 | 不卡一区二区在线观看 | 日韩av影音先锋 | 九一在线观看免费高清视频 | 另类小说一区二区 | 国产91一区在线精品 | 国产精品xxx在线观看 | 中文字幕亚洲区 | 欧美偷拍少妇精品一区 | 狠狠躁夜夜躁人 | 亚洲熟妇毛茸茸 | 色多多在线看 | 亚洲av无码国产综合专区 | 欧美在线不卡 | 欧美一本 | 亚洲区成人 | 青青青草视频在线观看 | 少妇大叫太粗太大爽一区二区 | 亚洲三级电影 | 欧美成人做爰大片免费看黄石 | av大帝在线观看 | 精品1卡二卡三卡四卡老狼 日韩三级网 | 懂色av一区二区三区免费 | 丰满人妻熟女aⅴ一区 |