亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Java中計時器的用法

系統 1928 0

利用計時器實現 對象狀態 檢測

當對象在創建后,每隔一定的時間需要變化一次狀態,并且該狀態的變化還要通知到用戶,可以利用Java的計時器實現對對象狀態變化的監測。

舉個例子,如種植了一顆植物,植物每隔兩分鐘需要變化一次狀態,讓后根據狀態的不同通知客戶端進行響應的事件處理。

植物生長狀態

生長時間

客戶端的處理

種子

2? 分鐘

顯示植物的幼苗狀態

幼苗

3? 分鐘

顯示植物的成年狀態

成熟

4? 分鐘

顯示植物的成熟狀態

收獲

5 分鐘

提示用戶收獲該作物

該事件處理的流程圖如下:

植物的類圖

articleID?: 植物ID?

roleID: 所屬角色ID?

currentState: 植物的當前狀態?

timer: 生長剩余時間

Java 中計時器的用法:

(1)Timer.schedule(TimerTask?task,Date?time) 安排在制定的時間執行指定的任務。
(2)Timer.schedule(TimerTask?task,Date?firstTime?,long?period) 安排指定的任務在指定的時間開始進行重復的固定延遲執行.
(3)Timer.schedule(TimerTask?task,long?delay) 安排在指定延遲后執行指定的任務.
(4)Timer.schedule(TimerTask?task,long?delay,long?period) 安排指定的任務從指定的延遲后開始進行重復的固定延遲執行.
(5)Timer.scheduleAtFixedRate(TimerTask?task,Date?firstTime,long?period) 安排指定的任務在指定的時間開始進行重復的固定速率執行.
(6)Timer.scheduleAtFixedRate(TimerTask?task,long?delay,long?period) 安排指定的任務在指定的延遲后開始進行重復的固定速率執行.

實現的源碼:

import?java.util.HashMap;

import?java.util.LinkedList;

import?java.util.Timer;

import?java.util.TimerTask;

import?org.apache.mina.common.IoSession;

import?com.toplx.mina.bussiness.handler.utils.ClientInforUtils;

public?class?Sacnning?{

public?static?Boolean?running?=?false;

public?static?void?scanningProduct()?{

Timer?time?=?new?Timer();

long?delay?=?50;

long?period?=?100;

//? 開始執行計劃任務

time.schedule(new?TimerTask()?{

//? 檢測服務器的控制流程

int?k?=?0;

public?void?run()?{

System.out.println(" 開始打印???"?+?k?+?"?次");

k++;

running?=?true;

LinkedList<Product>?list?=?ProductList.productList;

System.out.println("??? 植物生長的鏈表長度為??"?+?list.size());

int?size?=?list.size();

for?(int?i?=?0;?i?<?size;?i++)?{

Product?product?=?list.getFirst();

Integer?tempTime?=?product.getTimer();

System.out.println("???tempTime??"?+?tempTime);

//? 改變作物的時間

if?(tempTime?>?0)?{

tempTime--;

product.setTimer(tempTime);

list.removeFirst();

list.addLast(product);

System.out.println("???? 已經減--");

System.out.println("???? 植物的當前狀態??"+product.getCurrentState());

}?else?{

System.out.println("??? 向客戶端發送植物生長狀態");

Integer?currentState?=?product.getCurrentState();

IoSession?session?=?ClientInforUtils.getSessionByID

.get(product.getRoleID());

System.out.println("--------------------"+product.getRoleID());

System.out.println("--------------------"+session);

switch?(currentState)?{

case?1:

product.setCurrentState(2);

product.setTimer(30);

list.addLast(product);

list.removeFirst();

notifyClient(session,?product.getArticleID(),

product.getCurrentState());

break;

case?2:

product.setCurrentState(3);

product.setTimer(30);

list.addLast(product);

list.removeFirst();

notifyClient(session,?product.getArticleID(),

product.getCurrentState());

break;

case?3:

product.setCurrentState(4);

product.setTimer(30);

list.addLast(product);

list.removeFirst();

notifyClient(session,?product.getArticleID(),

product.getCurrentState());

break;

case?4:

product.setCurrentState(5);

product.setTimer(30);

list.addLast(product);

list.removeFirst();

notifyClient(session,?product.getArticleID(),

product.getCurrentState());

break;

case?5:

product.setCurrentState(6);

product.setTimer(30);

list.addLast(product);

list.removeFirst();

notifyClient(session,?product.getArticleID(),

product.getCurrentState());

break;

case?6:

product.setCurrentState(1);

product.setTimer(30);

list.addLast(product);

list.removeFirst();

notifyClient(session,?product.getArticleID(),

product.getCurrentState());

break;

default:

break;

}

}

}

}

},?delay,?period);

}

public?static?void?notifyClient(IoSession?session,?Integer?articleID,

Integer?state)?{

HashMap<String,?Object>?map;

switch?(state)?{

case?1:

map?=?new?HashMap<String,?Object>();

map.put("Event",?"S_Product_Grow");

map.put("productID",?articleID);

map.put("state",?state);

session.write(map);

break;

case?2:

map?=?new?HashMap<String,?Object>();

map.put("Event",?"S_Product_Grow");

map.put("productID",?articleID);

map.put("state",?state);

System.out.println("??? 客戶端地址??"+session);

session.write(map);

break;

case?3:

map?=?new?HashMap<String,?Object>();

map.put("Event",?"S_Product_Grow");

map.put("productID",?articleID);

map.put("state",?state);

session.write(map);

break;

case?4:

map?=?new?HashMap<String,?Object>();

map.put("Event",?"S_Product_Grow");

map.put("productID",?articleID);

map.put("state",?state);

session.write(map);

break;

case?5:

map?=?new?HashMap<String,?Object>();

map.put("Event",?"S_Product_Grow");

map.put("productID",?articleID);

map.put("state",?state);

session.write(map);

break;

case?6:

map?=?new?HashMap<String,?Object>();

map.put("Event",?"S_Product_Grow");

map.put("productID",?articleID);

map.put("state",?state);

session.write(map);

break;

default:

break;

}

}

}

package?com.toplx.mina.bussiness.handler.allhandlers.product.utils;

public?class?Product?{

private?Integer?articleID;

private?Integer?roleID;

private?Integer?currentState;

private?Integer?timer;

public?Product(Integer?articleID,?Integer?roleID)?{

this.articleID?=?articleID;

<span s

  • Java中計時器的用法
  • 大小: 82 KB
  • Java中計時器的用法
  • 大小: 82 KB
分享到:
評論

Java中計時器的用法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜色网站 | 欧美大黄大色一级毛片出红 | 成人日批视频 | 日本二区视频 | 日本高清免费不卡视频 | 中文字幕国产精品 | 久久综合成人 | 欧美一级爱爱视频 | 丁香婷婷六月 | 97se色综合一区二区二区 | 亚洲精品人成在线观看 | 久久中精品中文 | 国产精品一区二区三区久久 | 91欧美亚洲 | 国产精品热久久毛片 | 久久久久久久国产a∨ | 国产毛片一级 | 日本一区二区三区四区公司 | 精品美女| 色老头老太做爰视频在线观看 | 狼狼色丁香久久婷婷综合五月 | 婷婷免费高清视频在线观看 | 亚洲欧美日韩网站 | 男人看片网站 | 久久精品国1国二国三 | a一级特黄日本大片 s色 | 欧美成人毛片免费视频 | 在线 中文字幕 日韩 欧美 | 玖玖中文字幕 | 欧洲激情乱子伦 | 国产大片91精品免费观看不卡 | 暗香影院午夜国产精品 | 欧美亚洲国产精品 | 永久黄网站色视频免费观看99 | 国内精品免费久久久久妲己 | 亚洲精品成人456在线播放 | 愉拍精品视频在线观看 | 日本中文字幕视频在线看 | 国产视频观看 | 日韩一区二区三区中文字幕 | 夜夜嘿视频免费看 |