新建一个线程并启动,开销会很大,因为运行线程需要的资源比调用对象方法需要的资源多得多。在很多情况下,线程被用于执行一类任务,而这类任务数量很多,发生的时间分布不均,如果为每个新任务都启用一个新线程来执行,则开销会太大,可以采用一种性能优化技术,就是使用线程池。 将若干执行任务的 ...
新建一个线程并启动,开销会很大,因为运行线程需要的资源比调用对象方法需要的资源多得多。在很多情况下,线程被用于执行一类任务,而这类任务数量很多,发生的时间分布不均,如果为每个新任务都启用一个新线程来执行,则开销会太大,可以采用一种性能优化技术,就是使用线程池。
将若干执行任务的线程放在池中,当有任务要执行时,从池中取出一个空闲线程来处理任务,处理完任务后,再讲线程对象放入池中。线程池实际上就是一个对象池,只是池中的对象都是线程。
本文实例将实现一个线程池,可以给线程池分配任务,线程池中的线程自动获取任务并执行。
关键技术:1.线程组ThreadGroup可以管理多个线程,所以让线程池继承ThreadGroup。
2.无条件关闭线程池时,通过ThreadGroup的interrupt方法中断池中的所有线程。
3.有条件关闭线程池时,通过ThreadGroup获得池中所有活动线程的引用,依次调用Thread的join方法等待活动线程执行完毕。当所有线程都运行结束时,线程池才 能被关闭。
4.将任务放在LinkedList中,由于LinkedList不支持同步,所以在添加任务和获取任务的方法声明中必须使用Synchronized关键字。
实例
package book.thread.pool;
原标题:线程池学习
关键词:线程
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。