線程池的效率非常高,所以一切線程操作最好都是以線程池的方式進行。
常見的線程池有:
①newSingleThreadExecutor
單個線程的線程池,即線程池中每次只有一個線程工作,單線程串行執行任務
②newFixedThreadExecutor
固定數量的線程池,沒提交一個任務就是一個線程,直到達到線程池的最大數量,然後後面進入等待隊列直到前面的任務完成才繼續執行
③newScheduleThreadExecutor
大小無限制的線程池,支持定時和週期性的執行線程
④newCacheThreadExecutor
可緩存線程池,當線程池大小超過了處理任務所需的線程,那麼就會回收部分空閒的線程,當有任務來時,又智能的添加新線程來執行。
下面是一些線程池的簡單用法:
1、先創建線程池
2、創建線程對象
3、提交線程對象
4、銷燬線程池
- public class ThreadPool {
- public static void main(String[] args) {
- // 利用線程池創建工廠類拿到線程池對象
- ExecutorService executorService = Executors.newFixedThreadPool(6);
- // 創建線程對象
- Thread thread01 = new Thread(new Runnable() {
- @Override
- public void run() {
- System.out.println("thread01...");
- }
- });
- Thread thread02 = new Thread(new Runnable() {
- @Override
- public void run() {
- System.out.println("thread02...");
- }
- });
- // 將線程對象添加到線程池中
- executorService.submit(thread01);
- executorService.submit(thread02);
- //銷燬線程池
- executorService.shutdown();
- }
- }