熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

JDK5 java.util.concurrent 線程池[2]

2013-11-23 19:57:11  來源: Java高級技術 

    需要注意的是線程池必須使用shutdown來顯式關閉否則主線程就無法退出shutdown也不會阻塞主線程

    許多長時間運行的應用有時候需要定時運行任務完成一些諸如統計優化等工作比如在電信行業中處理用戶話單時需要每隔分鐘處理話單網站每天凌晨統計用戶訪問量用戶數大型超時凌晨點統計當天銷售額以及最熱賣的商品每周日進行數據庫備份公司每個月的號計算工資並進行轉帳等這些都是定時任務通過 java的並發庫concurrent可以輕松的完成這些任務而且非常的簡單

 packageconcurrent;
  importstaticjavautilconcurrentTimeUnitSECONDS;
  importjavautilDate;
  importjavautilconcurrentExecutors;
  importjavautilconcurrentScheduledExecutorService;
  importjavautilconcurrentScheduledFuture;
  publicclassTestScheduledThread{
  publicstaticvoidmain(String[]args){
  finalScheduledExecutorServicescheduler=Executors
  newScheduledThreadPool();
  finalRunnablebeeper=newRunnable(){
  intcount=;
  publicvoidrun(){
  Systemoutprintln(newDate()+beep+(++count));
  }
  };
  //秒鐘後運行並每隔秒運行一次
  finalScheduledFuture<?>beeperHandle=schedulerscheduleAtFixedRate(
  beeperSECONDS);
  //秒鐘後運行並每次在上次任務運行完後等待秒後重新運行
  finalScheduledFuture<?>beeperHandle=scheduler
  scheduleWithFixedDelay(beeperSECONDS);
  //秒後結束關閉任務並且關閉Scheduler
  schedulerschedule(newRunnable(){
  publicvoidrun(){
  beeperHandlecancel(true);
  beeperHandlecancel(true);
  schedulershutdown();
  }
  }SECONDS);
  }
  }

    為了退出進程上面的代碼中加入了關閉Scheduler的操作而對於小時運行的應用而言是沒有必要關閉Scheduler的

[]  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27714.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.