线程--线程池

参考文章:
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时,必定要注意控制任务的数量,不然,因为大量线程同时运行,颇有会形成系统瘫痪。