監(jiān)控java代碼執(zhí)行時間 監(jiān)控java代碼執(zhí)行時間怎么看

java線程 如何監(jiān)控用戶操作超時

給一個我自己的絲路:

為湖北等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及湖北網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、湖北網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

用戶開始操作時,session記錄狀態(tài)。并開啟定時器,延遲時間就是你允許用戶操作的時間。定時器執(zhí)行的代碼,就是用戶超時后,你要做的事情。

用戶在時間范圍內(nèi)操作完成,肯定會給服務(wù)器發(fā)送完成信息,此時移除定時器即可。

java 方法 執(zhí)行超時處理

java 1.5以上的Future類可以執(zhí)行超時處理。

jdk1.5自帶的并發(fā)庫中Future類中重要方法包括get()和cancel(),get()獲取數(shù)據(jù)對象,如果數(shù)據(jù)沒有加載,就會阻塞直到取到數(shù)據(jù),而 cancel()是取消數(shù)據(jù)加載。另外一個get(timeout)操作,表示如果在timeout時間內(nèi)沒有取到就失敗返回,而不再阻塞。

代碼如下:

import?java.util.concurrent.Callable;

import?java.util.concurrent.ExecutionException;

import?java.util.concurrent.ExecutorService;

import?java.util.concurrent.Executors;

import?java.util.concurrent.TimeUnit;

import?com.sun.corba.se.impl.orbutil.closure.Future;

import?com.sun.corba.se.impl.orbutil.threadpool.TimeoutException;

public?class?ThreadTest?{??

public?static?void?main(String[]?args)?throws?InterruptedException,??

ExecutionException?{??

final?ExecutorService?exec?=?Executors.newFixedThreadPool(1);??

CallableString?call?=?new?CallableString()?{??

public?String?call()?throws?Exception?{??

//開始執(zhí)行耗時操作??

Thread.sleep(1000?*?5);??

return?"線程執(zhí)行完成.";??

}??

};??

try?{??

FutureString?future?=?exec.submit(call);??

String?obj?=?future.get(1000?*?1,?TimeUnit.MILLISECONDS);?//任務(wù)處理超時時間設(shè)為?1?秒??

System.out.println("任務(wù)成功返回:"?+?obj);??

}?catch?(TimeoutException?ex)?{??

System.out.println("處理超時啦....");??

ex.printStackTrace();??

}?catch?(Exception?e)?{??

System.out.println("處理失敗.");??

e.printStackTrace();??

}??

//?關(guān)閉線程池??

exec.shutdown();??

}??

}

java怎么讓程序每天晚上12點做定時任務(wù),因為程序是不定時開的,所以要實時監(jiān)聽系統(tǒng)時間。

java定時任務(wù),每天定時執(zhí)行任務(wù)(JDK TimerTask)

標(biāo)簽: taskTasktimerTimer

2013-01-14 13:28 8747人閱讀 評論(0) 收藏 舉報

01 public class TimerManager {

02

03 //時間間隔

04 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

05

06 public TimerManager() {

07 Calendar calendar = Calendar.getInstance();

08

09 /*** 定制每日2:00執(zhí)行方法 ***/

10

11 calendar.set(Calendar.HOUR_OF_DAY, 2);

12 calendar.set(Calendar.MINUTE, 0);

13 calendar.set(Calendar.SECOND, 0);

14

15 Date date=calendar.getTime(); //第一次執(zhí)行定時任務(wù)的時間

16

17 //如果第一次執(zhí)行定時任務(wù)的時間 小于 當(dāng)前的時間

18 //此時要在 第一次執(zhí)行定時任務(wù)的時間 加一天,以便此任務(wù)在下個時間點執(zhí)行。如果不加一天,任務(wù)會立即執(zhí)行。

19 if (date.before(new Date())) {

20 date = this.addDay(date, 1);

21 }

22

23 Timer timer = new Timer();

24

25 NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();

26 //安排指定的任務(wù)在指定的時間開始進(jìn)行重復(fù)的固定延遲執(zhí)行。

27 timer.schedule(task,date,PERIOD_DAY);

28 }

29

30 // 增加或減少天數(shù)

31 public Date addDay(Date date, int num) {

32 Calendar startDT = Calendar.getInstance();

33 startDT.setTime(date);

34 startDT.add(Calendar.DAY_OF_MONTH, num);

35 return startDT.getTime();

36 }

37

38 }

在 TimerManager 這個類里面,大家一定要注意 時間點的問題。如果你設(shè)定在凌晨2點執(zhí)行任務(wù)。但你是在2點以后

發(fā)布的程序或是重啟過服務(wù),那這樣的情況下,任務(wù)會立即執(zhí)行,而不是等到第二天的凌晨2點執(zhí)行。為了,避免這種情況

發(fā)生,只能判斷一下,如果發(fā)布或重啟服務(wù)的時間晚于定時執(zhí)行任務(wù)的時間,就在此基礎(chǔ)上加一天。

01 public class NFDFlightDataTimerTask extends TimerTask {

02

03 private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);

04

05 @Override

06 public void run() {

07 try {

08 //在這里寫你要執(zhí)行的內(nèi)容

09

10 } catch (Exception e) {

11 log.info("-------------解析信息發(fā)生異常--------------");

12 }

13 }

14 }

15

16 public class NFDFlightDataTaskListener implements ServletContextListener {

17

18 public void contextInitialized(ServletContextEvent event) {

19 new TimerManager();

20 }

21

22 public void contextDestroyed(ServletContextEvent event) {

23 }

24

25 }

然后要在web.xml里面配置監(jiān)聽器

1 listener

2 listener-class

3 com.listener.NFDFlightDataTaskListener

4 /listener-class

5 /listener

請教,怎么監(jiān)控一個Java程序是否運行結(jié)束

檢測一個JAVA程序的運行時間方法:

1

2

3

4

long startTime = System.currentTimeMillis();//獲取當(dāng)前時間

//doSomeThing(); //要運行的java程序

long endTime = System.currentTimeMillis();

System.out.println("程序運行時間:"+(endTime-startTime)+"ms");

分享題目:監(jiān)控java代碼執(zhí)行時間 監(jiān)控java代碼執(zhí)行時間怎么看
網(wǎng)站鏈接:http://muchs.cn/article40/ddihdho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、商城網(wǎng)站自適應(yīng)網(wǎng)站、標(biāo)簽優(yōu)化網(wǎng)站制作、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站