<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [Java四種線程池的使用](http://cuisuqiang.iteye.com/blog/2019372) Java通過Executors提供四種線程池,分別為: newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。 newFixedThreadPool 創建一個定長線程池,可控制線程最大并發數,超出的線程會在隊列中等待。 newScheduledThreadPool 創建一個定長線程池,支持定時及周期性任務執行。 newSingleThreadExecutor 創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。 **(1) newCachedThreadPool** 創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。示例代碼如下: Java代碼? 1. package?test;?? 2. import?java.util.concurrent.ExecutorService;?? 3. import?java.util.concurrent.Executors;?? 4. public?class?ThreadPoolExecutorTest?{?? 5. ?public?static?void?main(String[]?args)?{?? 6. ??ExecutorService?cachedThreadPool?=?Executors.newCachedThreadPool();?? 7. ??for?(int?i?=?0;?i?10;?i++)?{?? 8. ???final?int?index?=?i;?? 9. ???try?{?? 10. ????Thread.sleep(index?*?1000);?? 11. ???}?catch?(InterruptedException?e)?{?? 12. ????e.printStackTrace();?? 13. ???}?? 14. ???cachedThreadPool.execute(new?Runnable()?{?? 15. ????public?void?run()?{?? 16. ?????System.out.println(index);?? 17. ????}?? 18. ???});?? 19. ??}?? 20. ?}?? 21. }?? 線程池為無限大,當執行第二個任務時第一個任務已經完成,會復用執行第一個任務的線程,而不用每次新建線程。 (2) newFixedThreadPool 創建一個定長線程池,可控制線程最大并發數,超出的線程會在隊列中等待。示例代碼如下: Java代碼? 1. package?test;?? 2. import?java.util.concurrent.ExecutorService;?? 3. import?java.util.concurrent.Executors;?? 4. public?class?ThreadPoolExecutorTest?{?? 5. ?public?static?void?main(String[]?args)?{?? 6. ??ExecutorService?fixedThreadPool?=?Executors.newFixedThreadPool(3);?? 7. ??for?(int?i?=?0;?i?10;?i++)?{?? 8. ???final?int?index?=?i;?? 9. ???fixedThreadPool.execute(new?Runnable()?{?? 10. ????public?void?run()?{?? 11. ?????try?{?? 12. ??????System.out.println(index);?? 13. ??????Thread.sleep(2000);?? 14. ?????}?catch?(InterruptedException?e)?{?? 15. ??????e.printStackTrace();?? 16. ?????}?? 17. ????}?? 18. ???});?? 19. ??}?? 20. ?}?? 21. }?? 因為線程池大小為3,每個任務輸出index后sleep 2秒,所以每兩秒打印3個數字。 定長線程池的大小最好根據系統資源進行設置。如Runtime.getRuntime().availableProcessors() (3)? newScheduledThreadPool 創建一個定長線程池,支持定時及周期性任務執行。延遲執行示例代碼如下: Java代碼??![收藏代碼](http://cuisuqiang.iteye.com/images/icon_star.png) 1. package?test;?? 2. import?java.util.concurrent.Executors;?? 3. import?java.util.concurrent.ScheduledExecutorService;?? 4. import?java.util.concurrent.TimeUnit;?? 5. public?class?ThreadPoolExecutorTest?{?? 6. ?public?static?void?main(String[]?args)?{?? 7. ??ScheduledExecutorService?scheduledThreadPool?=?Executors.newScheduledThreadPool(5);?? 8. ??scheduledThreadPool.schedule(new?Runnable()?{?? 9. ???public?void?run()?{?? 10. ????System.out.println("delay?3?seconds");?? 11. ???}?? 12. ??},?3,?TimeUnit.SECONDS);?? 13. ?}?? 14. }?? 表示延遲3秒執行。 定期執行示例代碼如下: Java代碼? 1. package?test;?? 2. import?java.util.concurrent.Executors;?? 3. import?java.util.concurrent.ScheduledExecutorService;?? 4. import?java.util.concurrent.TimeUnit;?? 5. public?class?ThreadPoolExecutorTest?{?? 6. ?public?static?void?main(String[]?args)?{?? 7. ??ScheduledExecutorService?scheduledThreadPool?=?Executors.newScheduledThreadPool(5);?? 8. ??scheduledThreadPool.scheduleAtFixedRate(new?Runnable()?{?? 9. ???public?void?run()?{?? 10. ????System.out.println("delay?1?seconds,?and?excute?every?3?seconds");?? 11. ???}?? 12. ??},?1,?3,?TimeUnit.SECONDS);?? 13. ?}?? 14. }?? 表示延遲1秒后每3秒執行一次。 (4) newSingleThreadExecutor 創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。示例代碼如下: Java代碼 1. package?test;?? 2. import?java.util.concurrent.ExecutorService;?? 3. import?java.util.concurrent.Executors;?? 4. public?class?ThreadPoolExecutorTest?{?? 5. ?public?static?void?main(String[]?args)?{?? 6. ??ExecutorService?singleThreadExecutor?=?Executors.newSingleThreadExecutor();?? 7. ??for?(int?i?=?0;?i?10;?i++)?{?? 8. ???final?int?index?=?i;?? 9. ???singleThreadExecutor.execute(new?Runnable()?{?? 10. ????public?void?run()?{?? 11. ?????try?{?? 12. ??????System.out.println(index);?? 13. ??????Thread.sleep(2000);?? 14. ?????}?catch?(InterruptedException?e)?{?? 15. ??????e.printStackTrace();?? 16. ?????}?? 17. ????}?? 18. ???});?? 19. ??}?? 20. ?}?? 21. }?? 結果依次輸出,相當于順序執行各個任務。 你可以使用JDK自帶的監控工具來監控我們創建的線程數量,運行一個不終止的線程,創建指定量的線程,來觀察: 工具目錄:**C:\Program Files\Java\jdk1.6.0_06\bin\jconsole.exe** 運行程序做稍微修改: Java代碼??![收藏代碼](http://cuisuqiang.iteye.com/images/icon_star.png) 1. package?test;?? 2. import?java.util.concurrent.ExecutorService;?? 3. import?java.util.concurrent.Executors;?? 4. public?class?ThreadPoolExecutorTest?{?? 5. ?public?static?void?main(String[]?args)?{?? 6. ??ExecutorService?singleThreadExecutor?=?Executors.newCachedThreadPool();?? 7. ??for?(int?i?=?0;?i?100;?i++)?{?? 8. ???final?int?index?=?i;?? 9. ???singleThreadExecutor.execute(new?Runnable()?{?? 10. ????public?void?run()?{?? 11. ?????try?{?? 12. ??????while(true)?{?? 13. ???????System.out.println(index);?? 14. ???????Thread.sleep(10?*?1000);?? 15. ??????}?? 16. ?????}?catch?(InterruptedException?e)?{?? 17. ??????e.printStackTrace();?? 18. ?????}?? 19. ????}?? 20. ???});?? 21. ???try?{?? 22. ????Thread.sleep(500);?? 23. ???}?catch?(InterruptedException?e)?{?? 24. ????e.printStackTrace();?? 25. ???}?? 26. ??}?? 27. ?}?? 28. }?? 效果如下: ?![](http://dl.iteye.com/upload/picture/pic/129496/a37b1415-36ac-30b8-baf6-10897bbf443a.jpg) 選擇我們運行的程序: ![](http://dl.iteye.com/upload/picture/pic/129498/c518b086-b144-366c-884c-58a4bf985b05.jpg) 監控運行狀態 請您到ITEYE網站看 java小強 原創,謝謝! [http://cuisuqiang.iteye.com/](http://cuisuqiang.iteye.com/)?! 自建博客地址:[http://www.javacui.com/](http://www.javacui.com/)?,內容與ITEYE同步!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看