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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java線程池在使用中的問題解疑

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

創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元商城做網(wǎng)站,已為上家服務(wù),為商城各地企業(yè)和個人服務(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)然,我們實現(xiàn)的是最簡單的,這里只是為了演示Java線程池的實現(xiàn)原理。在實際應(yīng)用中,根據(jù)情況的不同,可以做很多優(yōu)化。比如:

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

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

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

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)建一個動態(tài)的線程池,其中線程的數(shù)量會根據(jù)實際需要來創(chuàng)建和回收,適合于執(zhí)行大量短期任務(wù)的情況;newFixedThreadPool(int nThreads)方法創(chuàng)建一個包含固定數(shù)量線程對象的Java線程池,nThreads代表要創(chuàng)建的線程數(shù),如果某個線程在運行的過程中因為異常而終止了,那么一個新的線程會被創(chuàng)建和啟動來代替它;而newSingleThreadExecutor()方法則只在線程池中創(chuàng)建一個線程,來執(zhí)行所有的任務(wù)。


分享名稱:Java線程池在使用中的問題解疑
瀏覽地址:http://m.5511xx.com/article/dhidhpc.html