线程池 java 新建方式_Java线程池的四种创建方式
Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
1.newCachedThreadPool 这里的线程池是无限大的,当一个线程完成任务之后,这个线程可以接下来完成将要分配的任务,而不是创建一个新的线程。
public static voidmain(String[] args) {
ExecutorService cachedThreadPool=Executors.newCachedThreadPool();for (int i = 0; i < 10; i++) {final int index =i;try{
Thread.sleep(10);
}catch(InterruptedException e) {
e.printStackTrace();
}
cachedThreadPool.execute(newRunnable() {public voidrun() {
System.out.println(index);
}
});
}
}
2.newFixedThreadPool
public static voidmain(String[] args) {
ExecutorService fixedThreadPool= Executors.newFixedThreadPool(3);for (int i = 0; i < 10; i++) {final int index =i;
fixedThreadPool.execute(newRunnable() {public voidrun() {try{
System.out.println(index);
Thread.sleep(10);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
3.newScheduledThreadPoo
public static voidmain(String[] args) {
ScheduledExecutorService scheduledThreadPool= Executors.newScheduledThreadPool(5);for (int i = 0; i < 10; i++) {
scheduledThreadPool.schedule(newRunnable() {public voidrun() {
System.out.println("delay 3 seconds");
}
},3, TimeUnit.SECONDS);
}
}
4.newSingleThreadExecutor 按顺序来执行线程任务 但是不同于单线程,这个线程池只是只能存在一个线程,这个线程死后另外一个线程会补上。
public static voidmain(String[] args) {
ExecutorService singleThreadExecutor=Executors.newSingleThreadExecutor();for (int i = 0; i < 10; i++) {final int index =i;
singleThreadExecutor.execute(newRunnable() {public voidrun() {/*System.out.println(index);*/
try{
System.out.println(index);
Thread.sleep(2000);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
线程池 java 新建方式_Java线程池的四种创建方式相关推荐
- Java线程池的四种创建方式
Java线程池的四种创建方式 Java使用Thread类来表示线程,所有的线程都是Thread类或者是他的子类.Java有四种方式来创建线程. (1)继承Thread类创建线程 (2)实现Runnab ...
- 线程池概念、线程池作用、线程池的四种创建方式
线程池 1.1.什么是线程池? 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程.线程池中线程的数量通常完全取决于可用内存数量和应用程 ...
- java的rest教程_[Java教程]SpringMVC的REST风格的四种请求方式
[Java教程]SpringMVC的REST风格的四种请求方式 0 2017-08-28 22:00:25 一. 在HTTP 协议里面,四个表示操作方式的动词:GET.POST.PUT.DELETE. ...
- python创建单例模式_Python单例模式的四种创建方式实例解析
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- 各种存储分配算法java代码实现_Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF...
1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是:BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...
- Java基础14 集合(重要)四种遍历方式 list 并发异常 set
一.collection 带all的方法 package day14;import java.util.ArrayList; import java.util.Collection;public cl ...
- java实现线程的方式_java多线程实现的四种方式
java多线程实现的四种方式1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口) 2.实现Runnable接口,重写run方法 3.实现Callable接口,重 ...
- java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...
java中数组的三种定义方式 java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 [java] view plain copy /** * 数组的三种定义方法 * 1.数组类型[] 数组名 ...
- java xml 方法_Java读取xml的四种方式
Java读取xml的四种方式 在平时工作中,难免会遇到把 XML 作为数据存储格式.面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML ...
最新文章
- 简单的Writer和Reader
- ChipScope Pro分析仪
- blender 子弹时间 动画
- luogu P3293 [SCOI2016]美味
- 源码篇:Python 实战案例----银行系统
- 关于C#内存释放的BUG?
- 转发和重定向和request域对象
- 使自己的注意力集中方法
- 2能不用cuda_洗洁精不用花钱买,自己在家2毛钱能做一大瓶,效果比买的还好!...
- springboot 手动提交事务_面试官你都工作3年了,也做过5个项目了,怎么连事务机制都不会...
- 我一定要让所有人都知道awk这个实用操作
- 《数字电子技术基础》3.3 CMOS门电路(上)
- python cpk 计算
- c语言排考场座位链表,用Excel制作考场座位布置图
- mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库
- SQL Server的密码忘了怎么设置新密码
- mac删除自带的 ABC 输入法
- 数据分析——逻辑树模式
- 5款替代微软Visio的开源免费软件
- Flutter桌面开发 - windows插件开发
热门文章
- 计算机利用公式计算实发工资怎么弄,2019新个税Excel计算器公式 助你轻松算出工资...
- linux 虚拟机不能启动不了系统,虚拟机更改linux初始启动5,出现无法启动现象
- 装oracle非常卡吗,win7系统安装完oracle电脑变卡的解决方法
- resultset需要关闭吗_液氮不锈钢补给瓶外筒上有一小块结霜能用吗
- ps修改dds贴图_「干货」喜爱3D游戏动漫建模的你,必备的次世代游戏贴图技巧...
- oracle 主键_Oracle约束详解
- Git 这样回退代码,才足够优雅
- 有些人一眼就能认出来,你认出来几个?
- 干掉MySQL!阿里云MVP专家的分库分表设计,搞得太棒了!
- 学计算机的女生是一种怎样的存在?