成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JDK5線程池亮點特性淺析

開發 后端
JDK5中的新特性java.util.concurrent線程池是什么情況呢?本文將向你介紹其中的奧秘。

JDK5線程池亮點特性就是將Doug Lea的并發庫引入到Java標準庫中。Doug Lea確實是一個牛人,能教書,能出書,能編碼,不過這在國外還是比較普遍的,而國內的教授們就相差太遠了。

一般的服務器都需要線程池,比如Web、FTP等服務器,不過它們一般都自己實現了線程池,比如以前介紹過的Tomcat、Resin和Jetty等,現在有了JDK5,我們就沒有必要重復造車輪了,直接使用就可以,何況使用也很方便,性能也非常高。

  1. packageconcurrent;  
  2.   importjava.util.concurrent.ExecutorService;  
  3.   importjava.util.concurrent.Executors;  
  4.   publicclassTestThreadPool{  
  5.   publicstaticvoidmain(Stringargs[])throwsInterruptedException{  
  6.   //onlytwothreads  
  7.   ExecutorServiceexec=Executors.newFixedThreadPool(2);  
  8.   for(intindex=0;index<100;index++){  
  9.   Runnablerun=newRunnable(){  
  10.   publicvoidrun(){  
  11.   longtime=(long)(Math.random()*1000);  
  12.   System.out.println("Sleeping"+time+"ms");  
  13.   try{  
  14.   Thread.sleep(time);  
  15.   }catch(InterruptedExceptione){  
  16.   }  
  17.   }  
  18.   };  
  19.   exec.execute(run);  
  20.   }  
  21.   //mustshutdown  
  22.   exec.shutdown();  
  23.   }  
  24.   } 

上面是一個簡單的例子,使用了2個大小的線程池來處理100個線程。但有一個問題:在for循環的過程中,會等待線程池有空閑的線程,所以主線程會阻塞的。為了解決這個問題,一般啟動一個線程來做for循環,就是為了避免由于線程池滿了造成主線程阻塞。不過在這里我沒有這樣處理。[重要修正:經過測試,即使線程池大小小于實際線程數大小,線程池也不會阻塞的,這與Tomcat的線程池不同,它將Runnable實例放到一個“無限”的BlockingQueue中,所以就不用一個線程啟動for循環。

另外它使用了Executors的靜態函數生成一個固定的線程池,顧名思義,線程池的線程是不會釋放的,即使它是Idle。這就會產生性能問題,比如如果線程池的大小為200,當全部使用完畢后,所有的線程會繼續留在池中,相應的內存和線程切換(while(true)+sleep循環)都會增加。如果要避免這個問題,就必須直接使用ThreadPoolExecutor()來構造。可以像Tomcat的線程池一樣設置“最大線程數”、“最小線程數”和“空閑線程keepAlive的時間”。通過這些可以基本上替換Tomcat的線程池實現方案。

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

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

  1. packageconcurrent;  
  2.   importstaticjava.util.concurrent.TimeUnit.SECONDS;  
  3.   importjava.util.Date;  
  4.   importjava.util.concurrent.Executors;  
  5.   importjava.util.concurrent.ScheduledExecutorService;  
  6.   importjava.util.concurrent.ScheduledFuture;  
  7.   publicclassTestScheduledThread{  
  8.   publicstaticvoidmain(String[]args){  
  9.   finalScheduledExecutorServicescheduler=Executors  
  10.   .newScheduledThreadPool(2);  
  11.   finalRunnablebeeper=newRunnable(){  
  12.   intcount=0;  
  13.   publicvoidrun(){  
  14.   System.out.println(newDate()+"beep"+(++count));  
  15.   }  
  16.   };  
  17.   //1秒鐘后運行,并每隔2秒運行一次  
  18.   finalScheduledFuture<?>beeperHandle=scheduler.scheduleAtFixedRate(  
  19.   beeper,1,2,SECONDS);  
  20.   //2秒鐘后運行,并每次在上次任務運行完后等待5秒后重新運行  
  21.   finalScheduledFuture<?>beeperHandle2=scheduler  
  22.   .scheduleWithFixedDelay(beeper,2,5,SECONDS);  
  23.   //30秒后結束關閉任務,并且關閉Scheduler  
  24.   scheduler.schedule(newRunnable(){  
  25.   publicvoidrun(){  
  26.   beeperHandle.cancel(true);  
  27.   beeperHandle2.cancel(true);  
  28.   scheduler.shutdown();  
  29.   }  
  30.   },30,SECONDS);  
  31.   }  
  32.   } 

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

JDK5線程池亮點特性java.util.concurrent就向你介紹到這里,關于更多的信息我們將會陸續給你介紹。

【編輯推薦】

  1. JDK1.6的十大技術淺談
  2. 安裝JDK后JRE與JVM聯系淺談
  3. JDK源碼Java.lang.Boolean的淺析
  4. JDK源碼分析之Set類詳解
  5. JDK源碼中ClassLoader的淺析
責任編輯:仲衡 來源: CSDN博客
相關推薦

2009-07-08 16:43:54

JDK5ProcessBuil

2009-07-22 09:39:18

CLR線程池

2012-02-29 13:26:20

Java

2021-08-20 08:22:12

Tomcat原生線程池

2020-07-08 12:05:55

Java線程池策略

2024-01-23 08:23:24

Java虛擬線程

2009-07-07 16:39:40

JDK Observe

2024-06-13 00:54:19

2021-03-08 08:55:22

開發

2014-08-13 10:41:08

linux線程

2009-03-23 10:53:00

PHP5.3新特性PHP5.3PHP5

2009-07-08 17:59:51

JDK JRE

2009-07-09 11:02:37

JDK5.0內置工具

2009-07-08 14:06:22

ClassLoaderJDK源碼

2009-07-24 17:30:37

Javascript閉

2009-07-08 17:02:11

JDK實現調用攔截器

2009-07-07 15:53:02

JDK日志

2009-07-09 11:43:22

JDK1.4assert

2024-01-26 08:33:14

JDK17JDK11版本

2010-04-06 09:47:38

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操天天摸天天干 | 亚洲精品免费视频 | 亚洲日本中文字幕在线 | wwww.xxxx免费 | 日韩免费1区二区电影 | 国产中文字幕网 | 在线观看成人 | 国产成人精品一区二区三区四区 | 中文字幕一区二区在线观看 | 亚洲国产一区二区在线 | 99精品欧美一区二区三区综合在线 | 久久99精品久久久久久琪琪 | 欧美精品一区二区三区四区五区 | 成人av播放 | 亚洲色欧美另类 | 亚洲日韩中文字幕一区 | 国内自拍视频在线观看 | 三级特黄特色视频 | 免费在线观看黄网站 | 羞羞涩涩在线观看 | 美女视频一区二区三区 | www.97国产 | 日韩图区| 天天综合国产 | 粉嫩国产精品一区二区在线观看 | 午夜精品一区二区三区在线视频 | 一级黄色片免费 | 久久久精品网 | 国产精品亚洲一区二区三区在线 | 黄色欧美大片 | 午夜免费观看体验区 | 久久久久久一区 | 国产综合在线视频 | 中文字幕亚洲区一区二 | 国产欧美日韩一区二区三区 | 亚洲成人免费观看 | 欧美成人一区二区 | 91在线精品秘密一区二区 | 色播久久久 | 亚洲伊人久久综合 | 欧美视频一区二区三区 |