參考文章:
html
http://blog.sina.com.cn/s/blog_4b93170a0102e1ns.html 緩存
http://www.oschina.net/question/565065_86540 spa
使用線程池好處:.net
減小了建立和銷燬線程所花的時間以及系統開銷
線程
不使用線程可能形成建立大量線程而消耗完內存資源
orm
工廠類Executors:
htm
建立線程池,並得到返回的值--ExecutorService類的對象,利用其中的submit以及shutdown方法對線程進行管理,並用Fucuture<T>來存儲返回的值,調用 fucture.get()方法便可得到這個返回值
對象
1>newFixedThreadPool 建立一個指定工做線程數量的線程池。blog
每當提交一個任務就建立一個工做線程,若是工做線程數量達到線程池初始的最大數,則將提交的任務存入到池隊列中。
2>newCachedThreadPool 建立一個可緩存的線程池。隊列
3>newSingleThreadExecutor 建立一個單線程化的Executor,即只建立惟一的工做者線程來執行任務,若是這個線程異常結束,會有另外一個取代它,保證順序執行(我以爲這點是它的特點)。
單工做線程最大的特色是可保證順序地執行各個任務,而且在任意給定的時間不會有多個線程是活動的 。
4>newScheduleThreadPool 建立一個定長的線程池,並且支持定時的以及週期性的任務執行,相似於Timer。
一.FixedThreadPool是一個典型且優秀的線程池,它具備線程池提升程序效率和節省建立線程時所耗的開銷的優勢。但在線程池空閒時,即線程池中沒有可運行任務時,它不會釋放工做線程,還會佔用必定的系統資源。
二.CachedThreadPool的特色就是在線程池空閒時,即線程池中沒有可運行任務時,它會釋放工做線程,從而釋放工做線程所佔用的資源。可是,但當出現新任務時,又要建立一新的工做線程,又要必定的系統開銷。而且,在使用CachedThreadPool時,必定要注意控制任務的數量,不然,因爲大量線程同時運行,頗有會形成系統癱瘓。