av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Java線程池在使用中的問題解疑

Java線程池需要我們不斷的學(xué)習(xí),其實(shí)我們?cè)谑褂玫臅r(shí)候還是有不少問題需要我們解決。我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的Java線程池?,F(xiàn)在我們就可以使用它了,下面的代碼做了一個(gè)簡(jiǎn)單的示例:

創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元商城做網(wǎng)站,已為上家服務(wù),為商城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

Java代碼

 
 
 
  1. public class SimpleTaskTest extends Task { 
  2. @Override 
  3. public void deal() { 
  4. // do something 
  5. public static void main(String[] args) throws InterruptedException { 
  6. ThreadPoolService service = new ThreadPoolService(); 
  7. service.start(); 
  8. // 執(zhí)行十次任務(wù) 
  9. for (int i = 0; i < 10; i++) { 
  10. service.runTask(new SimpleTaskTest()); 
  11. // 睡眠1秒鐘,等待所有任務(wù)執(zhí)行完畢 
  12. Thread.sleep(1000); 
  13. service.stop(); 
  14. public class SimpleTaskTest extends Task {
  15. @Override
  16. public void deal() {
  17. // do something
  18. }
  19. public static void main(String[] args) throws InterruptedException {
  20. ThreadPoolService service = new ThreadPoolService();
  21. service.start();
  22. // 執(zhí)行十次任務(wù)
  23. for (int i = 0; i < 10; i++) {
  24. service.runTask(new SimpleTaskTest());
  25. }
  26. // 睡眠1秒鐘,等待所有任務(wù)執(zhí)行完畢
  27. Thread.sleep(1000);
  28. service.stop();
  29. }
  30. }

當(dāng)然,我們實(shí)現(xiàn)的是最簡(jiǎn)單的,這里只是為了演示Java線程池的實(shí)現(xiàn)原理。在實(shí)際應(yīng)用中,根據(jù)情況的不同,可以做很多優(yōu)化。比如:

調(diào)整任務(wù)隊(duì)列的規(guī)則,給任務(wù)設(shè)置優(yōu)先級(jí),級(jí)別高的任務(wù)優(yōu)先執(zhí)行。
動(dòng)態(tài)維護(hù)Java線程池,當(dāng)待執(zhí)行任務(wù)數(shù)量較多時(shí),增加線程的數(shù)量,加快任務(wù)的執(zhí)行速度;當(dāng)任務(wù)較少時(shí),回收一部分長(zhǎng)期閑置的Java線程池,減少對(duì)系統(tǒng)資源的消耗。

事實(shí)上Java5.0及以上版本已經(jīng)為我們提供了線程池功能,無需再重新實(shí)現(xiàn)。這些類位于java.util.concurrent包中。

Executors類提供了一組創(chuàng)建Java線程池對(duì)象的方法,常用的有一下幾個(gè):

Java代碼

 
 
 
  1. public static ExecutorService newCachedThreadPool() { 
  2. // other code 
  3. public static ExecutorService newFixedThreadPool(int nThreads) { 
  4. // other code 
  5. public static ExecutorService newSingleThreadExecutor() { 
  6. // other code 
  7. public static ExecutorService newCachedThreadPool() {
  8. // other code
  9. }
  10. public static ExecutorService newFixedThreadPool(int nThreads) {
  11. // other code
  12. }
  13. public static ExecutorService newSingleThreadExecutor() {
  14. // other code
  15. }

newCachedThreadPool()方法創(chuàng)建一個(gè)動(dòng)態(tài)的線程池,其中線程的數(shù)量會(huì)根據(jù)實(shí)際需要來創(chuàng)建和回收,適合于執(zhí)行大量短期任務(wù)的情況;newFixedThreadPool(int nThreads)方法創(chuàng)建一個(gè)包含固定數(shù)量線程對(duì)象的Java線程池,nThreads代表要?jiǎng)?chuàng)建的線程數(shù),如果某個(gè)線程在運(yùn)行的過程中因?yàn)楫惓6K止了,那么一個(gè)新的線程會(huì)被創(chuàng)建和啟動(dòng)來代替它;而newSingleThreadExecutor()方法則只在線程池中創(chuàng)建一個(gè)線程,來執(zhí)行所有的任務(wù)。


網(wǎng)頁標(biāo)題:Java線程池在使用中的問題解疑
轉(zhuǎn)載來于:http://uogjgqi.cn/article/dhidhpc.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流