java 的線程池介紹

來源:互聯網
上載者:User

標籤:exe   任務   run   1.5   locking   介紹   ret   緩衝   new   

參考文獻: http://www.jianshu.com/p/87bff5cc8d8c

                   http://www.jianshu.com/p/edd7cb4eafa0

在Java應用中如果需要頻繁的去建立大量線程去完成任務,肯定會對效能有很大的影響。因為系統在建立和銷毀線程上需要消耗太多的資源,開銷很大。

所以在這種情況下可以考慮線程池。有以下優點:

1) 降低資源消耗 :通過重複利用已建立的線程降低線程建立和銷毀造成的消耗;

2)提高響應速度 : 當任務到達時,任務可以不需要等到線程建立就能立即執行;

3)提高線程的可管理型: 線程是稀缺資源,如果無限制的建立,不僅會消耗系統資源,還會降低系統的穩定性,使用線程池可以進行統一的分配,調優和監控

 

在Java1.5中引入的Executor架構中定義了四種建立線程池的方法:

一、newFixedThreadPool

private static Executor executor = Executors.newFixedThreadPool(10);

 固定型線程池,和newCacheThreadPool()差不多,也能夠實現resue(複用),但是這個池子規定了線程的最大數量,也就是說當池子有空閑時,那麼新的任務將會在空閑線程中被執行,一旦線程池內的線程都在進行工作,那麼新的任務就必須等待線程池有閒置時候才能夠進入線程池,其他的任務繼續排隊等待.這類池子沒有規定其閒置時間到底有多長.這一類的池子更適用於伺服器

二、newCachedThreadPool

private static Executor executor1 = Executors.newCachedThreadPool();

緩衝線程池,先查看線程池中是否有當前執行線程的緩衝,如果有就resue(複用),如果沒有,那麼需要建立一個線程來完成當前的調用.並且這類線程池只能完成一些生存期很短的一些任務.並且這類線程池內部規定能resue(複用)的線程,閒置時間不能超過60s,一旦超過了60s,就會被移出線程池

三、newSingleThreadExecutor

private static Executor executor2 = Executors.newSingleThreadExecutor();

初始化的線程池中只有一個線程,如果該線程異常結束,會重新建立一個新的線程繼續執行任務,唯一的線程可以保證所提交任務的順序執行,內部使用LinkedBlockingQueue作為阻塞隊列。

四、newScheduledThreadPool

private static Executor executor3 = Executors.newScheduledThreadPool(10);

調度型線程池,調度型線程池會根據Scheduled(工作清單)進行順延強制,或者是進行周期性的執行.適用於一些周期性的工作.

 

建立完任務後需要提交運行,線上程池架構中提供了兩種提交方法:

一、Executor.execute()

       通過execute方法提交的參數必須要實現Runnable介面,任務在run方法中執行,該種方法提交的任務沒有傳回值。

 //無傳回值    static class Task implements Runnable{        @Override        public void run(){                System.out.print(Thread.currentThread().getName());        }    }

 

二、ExecutorService.submit()

        通過submit方法提交的參數中需要實現Callable介面,任務在call方法中執行,該種方法有傳回值,可以通過傳回值來判斷任務的執行狀態。

//有傳回值    static class callTask implements Callable<String>{        @Override        public String call(){            return (Thread.currentThread().getName());        }    }

 

java 的線程池介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.