java线程池简述

原创 2015年11月17日 23:50:35

  java中如果业务上需要从数据库中抓取n条数据处理,这时为了加快处理速度一般是采用池程池进行处理。

  java默认实现的线程池是ThreadPoolExecutor。该类继承AbtractExecutorService,而AbstractExecutorService实现接口Executor及ExecutorService。

  Executor接口定义了一个executor(Runable command)方法。ExecutorService则定义了submit,shutdown等方法。

  ThreadPoolExecutor对于开发用户来讲,可以定制它的几个属性:

   corePoolSize(核心线程数),maxPoolSize(最大线程数),线程空闲时间(用于将大于corePoolSize个数的线程释放,使线程数维持在corePoolSize这个数上),任务队列。

   往线程池丢一个任务,之后的基本流程是:

   1.当当前线程池中活动的线程数小于corePoolSize时,创建一个新线程用于执行当前任务

   2.否则当当前线程池中活动的线程数大于等于corePoolSize时,将当前任务放入任务队列。

这里如果任务队列也满了,则只能再次创建线程来执行当前任务。

而最坏的情况下是创建的线程数超过maxPoolSize时,则会返回失败,或抛出异常。具体要看RejectHandler实现,default是抛运行时异常。还有是丢弃策略,丢弃最早的任务策略,或者拒绝的任务由调用方来执行。




java 四种线程池的简介

前瞻四种线程池内部构造都是来自同一个方法: 下面分别介绍一下各个参数的含义: corePoolSize: 线程池中所保存的核心线程数。线程池初始化启动之后,默认是空的,只有当任务来临之时,...
  • u013762572
  • u013762572
  • 2016年08月14日 13:58
  • 1541

线程池简述

Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序...
  • languobeibei
  • languobeibei
  • 2017年06月12日 14:45
  • 151

简述Java线程池以及使用

Java创建线程的4种方式 继承Thread,重写run()方法 实现Runnable接口,实现run()方法 实现Callable接口,实现Call()方法 使用线程池,并向其提交任务task,其内...
  • dh626995617
  • dh626995617
  • 2017年09月19日 21:38
  • 203

Java线程池原理及四种线程池的使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFi...
  • honghailiang888
  • honghailiang888
  • 2016年06月16日 11:36
  • 4218

java线程池的使用及案例分享

线程池原理及源码分析传送门Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回...
  • wildpal
  • wildpal
  • 2016年12月02日 17:14
  • 528

Java并发编程:线程池的使用(非常棒,通俗易懂)

Java并发编程:线程池的使用   在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:   如果并发的线程数量很多,并且每个线程都是执行一个时间...
  • u011531613
  • u011531613
  • 2017年03月13日 16:56
  • 17855

Java并发编程系列之二十五:线程池

线程池简介在之前介绍Executor框架的文章中对线程池有一个初步的认识,实际上线程池这种设计思想在Java中很普遍,比如JVM中常量池,以及Web开发使用到的数据库连接池。这些池本质上还是Java中...
  • u011116672
  • u011116672
  • 2016年04月07日 19:50
  • 3894

java ThreadPoolExecutor 自定义线程池demo

package com.lyq.jsoup.concurrent.threadpool; import java.util.concurrent.TimeUnit; /** * Created b...
  • woshimike
  • woshimike
  • 2016年12月28日 10:40
  • 1789

Java几种线程池类型介绍及使用

一、线程池使用场景 单个任务处理时间短 将需处理的任务数量大 二、使用Java线程池好处1.使用new Thread()创建线程的弊端: 每次通过new Thread()创建对象性能不佳。 线程缺乏统...
  • xu__cg
  • xu__cg
  • 2016年10月29日 09:54
  • 2046

java线程池学习(二) —— 实现一个简单的线程池

在上一篇文章中《java线程池学习(一) —— BlockingQueue》,我们简单探讨了一个BlockingQueue的概念。 那么在这边文章,我们要利用BlockingQueue来自己实现一个简...
  • Great_Smile
  • Great_Smile
  • 2015年10月03日 17:01
  • 2806
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java线程池简述
举报原因:
原因补充:

(最多只允许输入30个字)