线程池小结2

关于线程池的介绍,请看上一篇博客:http://www.cnblogs.com/DarrenChan/p/5774921.html

1. 线程池的5中创建方式

1) Single Thread Executor : 只有一个线程的线程池,因此所有提交的任务是顺序执行,

代码: Executors.newSingleThreadExecutor()

2)  Cached Thread Pool : 线程池里有很多线程需要同时执行,老的可用线程将被新的任务触发重新执行,如果线程超过60秒内没执行,那么将被终止并从池中删除,

代码:Executors.newCachedThreadPool()

3)  Fixed Thread Pool : 拥有固定线程数的线程池,如果没有任务执行,那么线程会一直等待,

代码: Executors.newFixedThreadPool(4)

在构造函数中的参数4是线程池的大小,你可以随意设置,也可以和cpu的核数量保持一致,获取cpu的核数量int cpuNums = Runtime.getRuntime().availableProcessors();

4)  Scheduled Thread Pool : 用来调度即将执行的任务的线程池,可能是不是直接执行, 每隔多久执行一次... 策略型的

代码:Executors.newScheduledThreadPool()

5)  Single Thread Scheduled Pool : 只有一个线程,用来调度任务在指定时间执行,代码:Executors.newSingleThreadScheduledExecutor()

时间: 2024-08-05 11:15:01

线程池小结2的相关文章

ThreadPool线程池 小结

ThreadPool类提供一个线程池,该线程池可用于发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器 线程池通过为应用程序提供一个由系统管理的辅助线程池使您可以更为有效地使用线程.一个线程监视排到线程池的若干个等待操作的状态.当一个等待操作完成时,线程池中的一个辅助线程就会执行对应的回调函数 托管线程池中的线程为后台线程,即它们的 IsBackground 属性为 true.这意味着在所有的前台线程都已退出后,ThreadPool 线程不会让应用程序保持运行 也可以将与等待操作不相关

Android线程管理之ExecutorService线程池(二)

前言: 上篇学习了线程Thread的使用,今天来学习一下线程池ExecutorService. 为什么要引入线程池? 1.)new Thread()的缺点 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪. 不利于扩展,比如如定时执行.定期执行.线程中断 2.)采用线程池的优点 重用存在的线程,减少对象创建.消亡的开销,性能佳 可有效控制最大并发线程数,提高系统资源的使用率,同

JAVA 线程与线程池简单小结

JAVA线程创建方式: 1.继承Thread类创建线程类 继承Thread类并重写该类的run方法,该un方法代表了线程要完成的任务. 2.通过Runnable接口创建线程类 实现runnable接口,重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体.将Runnable实现类实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象. 3.通过Callable和Future创建线程 (1)实现Callable接口,重写call()方

深入浅出 Java Concurrency (30): 线程池 part 3 Executor 生命周期[转]

我们知道线程是有多种执行状态的,同样管理线程的线程池也有多种状态.JVM会在所有线程(非后台daemon线程)全部终止后才退出,为了节省资源和有效释放资源关闭一个线程池就显得很重要.有时候无法正确的关闭线程池,将会阻止JVM的结束. 线程池Executor是异步的执行任务,因此任何时刻不能够直接获取提交的任务的状态.这些任务有可能已经完成,也有可能正在执行或者还在排队等待执行.因此关闭线程池可能出现一下几种情况: 平缓关闭:已经启动的任务全部执行完毕,同时不再接受新的任务 立即关闭:取消所有正在

JAVA线程池例子

用途及用法 网络请求通常有两种形式:第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后断开,如文件下载,网络流媒体等.另一种形式是请求频繁,但是连接上以后读/写很少量的数据就断开连接.考虑到服务的并发问题,如果每个请求来到以后服务都为它启动一个线程,那么这对服务的资源可能会造成很大的浪费,特别是第二种情况.因为通常情况下,创建线程是需要一定的耗时的,设这个时间为T1,而连接后读/写服务的时间为T2,当T1>>T2时,我们就应当考虑一种策略或者机制来控制,使得服务对

几种线程池的实现算法分析

1. 前言 在阅读研究线程池的源码之前,一直感觉线程池是一个框架中最高深的技术.研究后才发现,线程池的实现是如此精巧.本文从技术角度分析了线程池的本质原理和组成,同时分析了JDK.Jetty6.Jetty8.Tomcat的源码实现,对于想了解线程池本质.更好的使用线程池或者定制实现自己的线程池的业务场景具有一定指导意义. 2. 使用线程池的意义 复用:类似WEB服务器等系统,长期来看内部需要使用大量的线程处理请求,而单次请求响应时间通常比较短,此时Java基于操作系统的本地调用方式大量的创建和销

《Java源码分析》:线程池 ThreadPoolExecutor

<Java源码分析>:线程池 ThreadPoolExecutor ThreadPoolExecutor是ExecutorService的一张实现,但是是间接实现. ThreadPoolExecutor是继承AbstractExecutorService.而AbstractExecutorService实现了ExecutorService接口. 在介绍细节的之前,先介绍下ThreadPoolExecutor的结构 1.线程池需要支持多个线程并发执行,因此有一个线程集合Collection来执行

线程基础:线程池(7)——基本使用(下)

(接上文<线程基础:线程池(6)--基本使用(中)>,我要加快进度,以便在2月份恢复"系统间通信技术"专栏的写作) 5.扩展ThreadPoolExecutor线程池 实际上JAVA中提供的ThreadPoolExecutor线程池是鼓励各位程序员进行扩展的(虽然大多数情况下您无需扩展),并且JBOSS(Netty).Apache(Camel)也正是这样在做.下面我们看看一些由ThreadPoolExecutor提供的扩展方式. 5-1.Hook methods 在Thre

几种线程池的实现算法分析【转载】

原文地址 本文内容 前言 线程池意义 线程池技术要点 小节 参考源码 但凡是一个框架,基本都会涉及线程池问题.虽然你可能没有直接使用,那是因为框架帮你完成了这部分工作. 说,为什么需要线程池呢?试想,现在但凡是写一个服务程序,如果不采用并发或并行的方式,都有点对不起4核.8核,甚至更多的CPU内核,但是如果每次需要线程,都创建一次,这对性能的消耗,比较大,更加合适的做法是,在程序初始化时,一次性把所有线程都创建好,这样,当需要的时候,直接拿来过用~ 前言 在阅读研究线程池的源码之前,一直感觉线程