java 线程池的实现方法
线程池有以下几种实现方式:
Executors目前提供了5种不同的线程池创建配置:
1、newCachedThreadPool()
它是用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置时间超过60秒,则被终止并移除缓存;长时间闲置时,这种线程池,不会消耗什么资源。其内部使用SynchronousQueue作为工作队列。
2、newFixedThreadPool(int nThreads)
重用指定数目(nThreads)的线程,其背后使用的是无界的工作队列,任何时候最多有nThreads个工作线程是活动的。这意味着,如果任务数量超过了活动线程数目,将在工作队列中等待空闲线程出现;如果工作线程退出,将会有新的工作线程被创建,以补足指定数目nThreads。
3、newSingleThreadExecutor()
它的特点在于工作线程数目限制为1,操作一个无界的工作队列,所以它保证了所有的任务都是被顺序执行,最多会有一个任务处于活动状态,并且不予许使用者改动线程池实例,因此可以避免改变线程数目。
4、newSingleThreadScheduledExecutor()和newScheduledThreadPool(int corePoolSize)
创建的是个ScheduledExecutorService,可以进行定时或周期性的工作调度,区别在于单一工作线程还是多个工作线程。
5、newWorkStealingPool(int parallelism)
这是一个经常被人忽略的线程池,Java 8 才加入这个创建方法,其内部会构建ForkJoinPool,利用Work-Stealing算法,并行地处理任务,不保证处理顺序。
内容扩展:
java通过Executors工厂类提供我们的线程池一共有4种:
fixedThreadPool() //启动固定线程数的线程池
CachedThreadPool() //按需分配的线程池
ScheduledThreadPoolExecutor()//定时,定期执行任务的线程池
ThreadPoolExecutor()//指定线程数的线程池。
以上就是本次介绍的全部相关知识点,感谢大家的学习和对脚本之家的支持。
您可能感兴趣的文章:
- java 线程池的四实现方法
- java利用线程池(ExecutorService)配合Callable和Future实现执行方法超时的阻断
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- Java手写线程池的实现方法
- 并发编程(十二)—— Java 线程池 实现原理与源码深度解析 之submit方法 (二)
- java 注解实现一个可配置线程池的方法示例
- Java线程池的几种实现方法及常见问题解答
- 一种类似JAVA线程池的C++线程池实现方法
- 三个利用Java实现zip压缩/解压缩方法
- JBI - Java实现SOA的标准方法
- java实现读取hashmap的方法
- Java用OCI驱连Oracle数据库的实现方法
- 一种利用线程池线程执行任务, 并能够结束超时任务的方法 (.NET实现)
- 在DWR中实现直接获取一个JAVA类的返回值的两种方法
- 三个利用Java实现zip压缩/解压缩方法
- Java密码屏蔽输入的实现方法
- 如何在Java中实现将两个数相互交换的方法
- JBI - Java实现SOA的标准方法
- JBI - Java实现SOA的标准方法