转自:http://xtu-xiaoxin.iteye.com/blog/647580
在什么情况下使用线程池?
1.单个任务处理的时间比较短
2.将需处理的任务的数量大
使用线程池的好处:
1.减少在创建和销毁线程上所花的时间以及系统资源的开销
2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。
线程池工作原理:http://www.ibm.com/developerworks/cn/java/j-jtp0730/
该文章里有个例子,简单的描述了线程池的内部实现,建议根据里面的例子来了解JAVA 线程池的原理。同时,里面还详细描述了使用线程池存在的优点和弊端,大家可以研究下,我觉得是篇非常好的文章。
JDK自带线程池总类介绍介绍:
1、newFixedThreadPool创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中。
2、newCachedThreadPool创建一个可缓存的线程池。这种类型的线程池特点是:
1).工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线程池中添加线程。
2).如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(默认为1分钟),则该工作线程将自动终止。终止后,如果你又提交了新的任务,则线程池重新创建一个工作线程。
3、newSingleThreadExecutor创建一个单线程化的Executor,即只创建唯一的工作者线程来执行任务,如果这个线程异常结束,会有另一个取代它,保证顺序执行(我觉得这点是它的特色)。单工作线程最大的特点是可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的 。
4、newScheduleThreadPool创建一个定长的线程池,而且支持定时的以及周期性的任务执行,类似于Timer。(这种线程池原理暂还没完全了解透彻)
总结: 一.FixedThreadPool是一个典型且优秀的线程池,它具有线程池提高程序效率和节省创建线程时所耗的开销的优点。但是,在线程池空闲时,即线程池中没有可运行任务时,它不会释放工作线程,还会占用一定的系统资源。
二.CachedThreadPool的特点就是在线程池空闲时,即线程池中没有可运行任务时,它会释放工作线程,从而释放工作线程所占用的资源。但是,但当出现新任务时,又要创建一新的工作线程,又要一定的系统开销。并且,在使用CachedThreadPool时,一定要注意控制任务的数量,否则,由于大量线程同时运行,很有会造成系统瘫痪。
三.就是向各位请教一下,请问各位使用过SingleThreadExecutor吗?它一般使用在哪些地方?
刚研究了一下线程池,以上为个人学习过程以及观点,请勿见笑!下章,将分析一下JDK自带线程池(ThreadPoolExecutor.java)源码,如果感兴趣,可看看。顺便帮忙踩踩,呵呵!
相关推荐
Java线程池是一种高效管理线程的工具,它允许开发者预先创建一组线程,并复用它们来处理任务,从而降低了创建和销毁线程的开销。线程池的使用尤其适用于处理大量短小任务的场景,例如Web服务器、数据库服务器等。在...
### Java线程池的原理及几类线程池的介绍 #### 一、线程池的概念与作用 在计算机编程中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。Java语言支持多线程编程,使得...
Java线程池是一种高效管理并发任务执行的机制,它通过维护一组可重用的线程来减少创建和销毁线程的开销。线程池在Java中由`java.util.concurrent`包下的`ExecutorService`接口及其实现类,尤其是`ThreadPoolExecutor...
Java线程池是一种高效管理并发任务执行的机制,它通过预先创建并维护一定数量的线程,从而避免了频繁地创建和销毁线程所带来的性能开销。在Java中,线程池的实现主要依赖于`java.util.concurrent`包中的`...
本文所提及的基于Java线程池技术的数据爬虫设计与实现,不仅涉及到了数据爬虫的原理和架构,还包括了多线程编程的知识点,以及线程池技术在数据爬虫中的具体应用。 首先,数据爬虫的基本原理是模拟用户的点击行为,...
标题中的“Java实现的...总的来说,这个主题涵盖了Java并发编程中的核心概念,线程池和消息队列的实现原理及应用场景,以及可能用到的相关开发工具。理解并熟练运用这些知识对于提升Java应用的性能和稳定性至关重要。
总结来说,自定义Java线程池的实现涉及到线程的管理和调度,包括核心线程的维护、任务队列的使用以及拒绝策略的设定。理解这些机制有助于我们更好地优化并发程序,提高系统效率。然而,在实际开发中,通常推荐使用...
Java线程池是一种高效管理线程的工具,它允许开发者预先创建一组线程,当需要执行新任务时,线程池会从池中选择一个空闲线程来执行任务,而不是每次都创建新的线程。线程池的使用有助于减少线程创建和销毁的开销,...
Java线程池是一种高效管理线程的技术,它允许开发者预创建一定数量的线程,并将任务提交到线程池中进行执行,而不是每次需要时都创建新的线程。线程池通过合理分配系统资源,避免频繁创建销毁线程带来的开销,从而...
- `ExecutorService`和`ThreadPoolExecutor`是Java线程池的实现,可以有效地管理线程资源,避免频繁创建和销毁线程的开销。 4. **线程池的介绍及简单实现** - 线程池可以预先创建一定数量的线程,处理多个任务,...
本文将详细介绍线程池的实现原理、线程池的优势、线程池的类型、线程池的创建方式以及线程池的使用注意事项。 一、线程池的实现原理 线程池的实现原理基于池化技术,即减少每次获取资源的消耗,提高资源利用率。...
【Java线程池技术详解】 线程池是Java并发编程中的一个重要概念,它是一种线程使用模式,旨在优化线程的管理和使用,提高系统资源的利用率。线程池的引入是为了应对频繁创建和销毁线程所带来的性能开销,因为创建和...
Java线程池是一种用于管理线程的机制,能够有效提升程序的并发性能。它通过重用预先创建的线程来减少创建新线程所需的开销,同时也能有效地控制运行中的线程数量。线程池的设计基于工厂模式和池化模式,它不仅简化了...
通过以上介绍可以看出,Java线程池不仅能够有效控制线程数量,提高系统响应速度和资源利用率,还能够通过自定义配置实现更为复杂的任务调度逻辑。掌握线程池的原理及其使用方法,对于提高Java程序的性能和稳定性具有...
本文将深入探讨Java线程池的原理、使用方法以及在实际开发中的应用技巧。 首先,理解线程池的概念至关重要。线程池是一组预先创建的线程,它们在池中等待分配任务。当一个新任务提交时,线程池会从池中选择一个空闲...
下面将对Java线程池实现批量下载文件的原理和实现进行详细介绍。 Java线程池机制 Java线程池机制是Java并发编程中的一种常用机制,用于管理和执行多个线程。线程池机制可以将多个线程组织起来,实现多个任务的...
在Java中,线程池是一种实现池化技术的方式,主要是为了减少频繁创建和销毁线程所...了解以上知识点,能够帮助后端开发者更好地掌握Java线程池,应对面试中的相关问题,并在实际开发中更有效地使用线程池优化程序性能。
【线程池原理】 线程池的工作流程通常包括以下几个步骤: 1. 初始化线程池:创建一定数量的线程并置于待命状态。 2. 接收任务:当有新的任务请求时,线程池会选择一个待命线程执行任务。 3. 执行任务:被选中的线程...