線程--線程池

參考文章:
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時,必定要注意控制任務的數量,不然,因爲大量線程同時運行,頗有會形成系統癱瘓。