Java提供的几种线程池】的更多相关文章

线程池,顾名思义,放线程的池子嘛,这个池子可以存放多少线程取决于你自己采用什么样的线程池,你的硬件资源,以及并发线程的数量.JDK提供了下面的四种线程池: 固定线程数的线程池 最简单的 在Java中创建一个线程池,这很简单,只需要两行代码. ExecutorService executor = Executor.newFixedTreadPool(6);//固定线程是6 //线程一般设置成processor核心数的倍数,因为我这台机器是6核的,所以设成6.这也是充分利用硬件嘛 //执行线程任务…
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就out太多了,new Thread的弊端如下:a. 每次new Thread新建对象性能差.b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom.c.…
一.Thread与Executors 开启新的线程,我们经常会采用如下方法: Thread thread =new Thread(new Runnable() { @Override public void run() { System.out.println("new thread"); } }); 通过new Thread()的方式,会导致很多弊端,如下: 每一次都通过new Thread的方式,性能差. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导…
对javaSE中JDK提供的四种线程池稍作整理   一.Executor   package java.util.concurrent; /** * @since 1.5 * @author Doug Lea */ public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a poole…
JDK提供的几种线程池 newFixedThreadPool创建一个指定工作线程数量的线程池.每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中. newCachedThreadPool创建一个可缓存的线程池.这种类型的线程池特点是: 1).工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线程池中添加线程. 2).如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(…
1. 为什么使用线程池 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP.FTP 或 POP).通过 JMS 队列或者可能通过轮询数据库.不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的. 构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务.实际上对于原型开发这…
好久不发文章了,难道是因为忙,其实是因为懒.这是一篇关于线程池使用和基本原理的科普水文,如果你经常用到线程池,不知道你的用法标准不标准,是否有隐藏的 OOM 风险.不经常用线程池的同学,还有对几种线程的使用不甚了解的同学可以读一下此文. 为什么要使用线程池 虽然大家应该都已经很清楚了,但还是说一下.其实归根结底最主要的一个原因就是为了提高性能. 线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销.而线程池则是为了减少线程建立和销毁带来的性能消耗. 以 web 项…
一.线程池什么时候使用,会给我们带来什么好处? 如果很多用户去访问服务器,用户访问服务器的时间是非常短暂的,那么有可能在创建线程和销毁线程上花费的时间会远远大于访问所消耗的时间,如果采用线程池会使线程重复使用大大的提高效率. 在JDK1.5之前就有了线程池的概念,不过需要我们手动的去实现ThreadPool,在API中并没有叫"线程池"这个名字,而是叫做"执行程序". 根据CPU的情况 初始化 固定线程个数的线程池. 获取CPU上有多少个核....int proce…
JAVA并发编程——EXECUTORS 线程池的思想是一种对象池的思想,开放一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完毕,对象归还给池.这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源. 代码: http://www.cnblogs.com/chenjingjing/articles/1683745.html 一.固定大小的线程池 newFixedThreadPool  二.单任务线程池 newSingleT…
为什么要使用线程池 虽然大家应该都已经很清楚了,但还是说一下.其实归根结底最主要的一个原因就是为了提高性能. 线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销.而线程池则是为了减少线程建立和销毁带来的性能消耗. 以 web 项目为例,有以下两种情况: 1.每次过来一个请求,都要在服务端创建一个新线程来处理请求,请求处理完成销毁线程: 2.每次过来一个请求,服务端在线程池中直接拿过一个空闲的线程来处理这个请求,处理完成后还给线程池: 答案是肯定的,肯定是第二种使…