日韩性视频-久久久蜜桃-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定时器的写法是什么样?的全部內容,希望文章能夠幫你解決所遇到的問題。

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