日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JDK5線程池亮點(diǎn)特性淺析

JDK5線程池亮點(diǎn)特性就是將Doug Lea的并發(fā)庫引入到Java標(biāo)準(zhǔn)庫中。Doug Lea確實(shí)是一個牛人,能教書,能出書,能編碼,不過這在國外還是比較普遍的,而國內(nèi)的教授們就相差太遠(yuǎn)了。

10余年的茫崖網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整茫崖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“茫崖網(wǎng)站設(shè)計”,“茫崖網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實(shí)執(zhí)行。

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

 
 
 
  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循環(huán)的過程中,會等待線程池有空閑的線程,所以主線程會阻塞的。為了解決這個問題,一般啟動一個線程來做for循環(huán),就是為了避免由于線程池滿了造成主線程阻塞。不過在這里我沒有這樣處理。[重要修正:經(jīng)過測試,即使線程池大小小于實(shí)際線程數(shù)大小,線程池也不會阻塞的,這與Tomcat的線程池不同,它將Runnable實(shí)例放到一個“無限”的BlockingQueue中,所以就不用一個線程啟動for循環(huán)。

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

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

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

 
 
 
  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秒鐘后運(yùn)行,并每隔2秒運(yùn)行一次  
  18.   finalScheduledFuturebeeperHandle=scheduler.scheduleAtFixedRate(  
  19.   beeper,1,2,SECONDS);  
  20.   //2秒鐘后運(yùn)行,并每次在上次任務(wù)運(yùn)行完后等待5秒后重新運(yùn)行  
  21.   finalScheduledFuturebeeperHandle2=scheduler  
  22.   .scheduleWithFixedDelay(beeper,2,5,SECONDS);  
  23.   //30秒后結(jié)束關(guān)閉任務(wù),并且關(guān)閉Scheduler  
  24.   scheduler.schedule(newRunnable(){  
  25.   publicvoidrun(){  
  26.   beeperHandle.cancel(true);  
  27.   beeperHandle2.cancel(true);  
  28.   scheduler.shutdown();  
  29.   }  
  30.   },30,SECONDS);  
  31.   }  
  32.   } 

為了退出進(jìn)程,上面的代碼中加入了關(guān)閉Scheduler的操作。而對于24小時運(yùn)行的應(yīng)用而言,是沒有必要關(guān)閉Scheduler的。

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


本文標(biāo)題:JDK5線程池亮點(diǎn)特性淺析
鏈接URL:http://m.5511xx.com/article/dhcgcis.html