線程池
import?java.util.concurrent.ExecutorService; import?java.util.concurrent.Executors; public?class?Test?{ /** ?*? ?*?1??我想看文檔???????Word????word轉換成Pdf存儲 ?*?2?文檔處理中,請稍后再試? ?*/ public??void?oldHandle(String[]?args)?{ /** ?*?使用循環模擬許多用戶請求的場景 ?*/ for?(int?request?=?0;?request?<=100;?request++)?{ new??Thread(()->?{ System.out.println("文檔處理開始!"); try?{ /** ?*?將Word轉換成PDF格式:處理很長很長的耗時過程 ?*/ Thread.sleep(1000L*30); }?catch?(InterruptedException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } System.out.println("文檔處理結束!"); }?).start(); } } /** ?*?新的處理方式 ?*?@param?args ?*/ public?static?void?main(String[]?args)?{ /** ?*?開啟了一個線程池:線程個數是10個 ?*/ ExecutorService?threadPool?=?Executors.newFixedThreadPool(10); for?(int?request?=?0;?request?<=100;?request++)?{ threadPool.execute( ()->?{ System.out.println("文檔處理開始!"); try?{ /** ?*?將Word轉換成PDF格式:處理很長很長的耗時過程 ?*/ Thread.sleep(1000L*30); }?catch?(InterruptedException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } System.out.println("文檔處理結束!"); } ); } } }
線程池簡介
什么是線程池
線程池顧名思義就是事先創建若干個可執行的線程放入一個池(容器)中,需要的時候從池中
獲取線程不用自行創建,使用完畢不需要銷毀線程而是放回池中,從而減少創建和銷毀線程對象
的開銷。
線程池帶來的好處
1、降低資源消耗
2、提高響應速度
3、提高線程的可管理性
面試題:簡單線程池設計
面試官:
同學你好,你能獨立設計出一個簡單線程池嗎?
池子? ?1、開啟/初始化/關閉
2 、獲取線程
3、歸還線程
問題:創建多少
沒有線程了,咋整
---------------------
升級版
直接提交任務? ?異步通知
-------------
中間過程省略? ? ? ? 有一個任務 隊列存任務? ? ? ? ? 有一個執行器,
問題:
創建多少
滿了,怎么辦
數組要多長
任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。