一.
1.java四中线程池的使用

java通过Excutors提供四种线程池,分别为:
newCacheThreadPool():创建一个可缓存的线程池,如果线程池大小超过处理需要,可灵活回收空闲线程,若无空闲线程,则新建线程。
newFixedThreadPool():创建一个定长的线程池,可控制线程最大并发数,超出的线程会在队列中排队。
newScheduledThreadPool():创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor():创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有的任务按照制定的顺序(FIFO,LIFO,优先级)执行。

二.
public static void main(String[] args) {

// 1.线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。
//
// ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
//
// for (int i = 0; i < 10; i++) {
//
// final int index = i;
//
// try {
// Thread.sleep(index * 100);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
//
// cachedThreadPool.execute(new Runnable() {
//
// @Override
// public void run() {
// System.out.println(index);
// System.out.println(cachedThreadPool);
// }
//
// });
// }

/**
* 2.指定线程池的大小,如果指定线程池大小为5,而请求总数为100,那么前五个的顺序一般会是乱的,因为第一次进入线程池的有五个值,池中的五个线程拿到哪个执行哪个,之后
* 哪个线程执行完则继续按队列的顺序去抓取任务,所以前面的一般是乱的,后面基本会按顺序输入---线程池大小为100,任务有100,后面的基本还在后面,前面的还在前面,因为
* 线程的抓取是按顺序去随机抓取的
*/
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(100);
for (int i = 0; i < 100; i++) {
final int index = i;
fixedThreadPool.execute(new Runnable() {

@Override
public void run() {
try {
System.out.println(index);
Thread.sleep(2000);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}

// 3.1定时执行 先睡一秒,之后的睡三秒 scheduleAtFixedRate
// ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
// scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
//
// @Override
// public void run() {
//
// System.out.println("delay 3 seconds");
//
// }
// }, 1, 3, TimeUnit.SECONDS);

3.2--睡三秒后执行 schedule
public static void main(String[] args) {

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
scheduledThreadPool.schedule(new Runnable() {
public void run() {
System.out.println("delay 3 seconds");
}
}, 3, TimeUnit.SECONDS);
}

//4.创建单线程
// ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
// for (int i = 0; i < 10; i++) {
// final int index = i;
// singleThreadExecutor.execute(new Runnable() {
//
// @Override
// public void run() {
// try {
// System.out.println(index);
// Thread.sleep(2000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// });
// }

转载于:https://www.cnblogs.com/tian666/p/7845282.html

线程池2--创建线程相关推荐

  1. 谈谈java的线程池(创建、机制)

    目录 Executors创建线程池默认方法 自定义线程池 Executors创建线程池默认方法 newFixedThreadPool()方法,该方法返回一个固定数量的线程池,该方法的线程数始终不变,当 ...

  2. 线程池(实现线程的第四种方式)

    线程池(实现线程的第四种方式) 1. 线程是什么 线程池其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作.无需反复创建线程而消耗过多的资源 2.使用线程池的优点 * ...

  3. SpringBoot线程池的创建、@Async配置步骤及注意事项

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Muscleheng blog.csdn.net/Muscl ...

  4. Spring Boot 线程池的创建、@Async 配置步骤及注意事项

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:终于放弃了单调的swagger-ui了,选择了这款神器-knife4j个人原创+1博客:点击前往,查看更多 作者 ...

  5. JUC多线程:线程池的创建及工作原理 和 Executor 框架

    一.什么是线程池: 线程池主要是为了解决 新任务执行时,应用程序为任务创建一个新线程 以及 任务执行完毕时,销毁线程所带来的开销.通过线程池,可以在项目初始化时就创建一个线程集合,然后在需要执行新任务 ...

  6. 如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?

    前言 相信大家在面试的时候经常会遇到「线程池」相关的问题,比如: 什么是线程池?线程池的优点? 有哪几种创建线程池的方式? 四种创建线程池的使用场景? 线程池的底层原理? 线程池相关的参数,比如Cor ...

  7. java线程池怎么创建_java中的线程池,如何创建?

    Java中的线程池它是线程的容器,或者(换句话说,它是具有执行任务能力的线程的集合). 我们可以使用ThreadPool框架来定位(或实现)线程池. 线程池可以包含多个线程.每当我们执行任何任务时,线 ...

  8. java(线程池的创建方式,和线程池的原理)

    1.为什么要使用线程池:   减少资源消耗,通过重复的使用已创建好的线程,避免了线程的频繁创建和销毁所造成的消耗 提高响应速度,当任务到达的时候,不需要再去创建,可以直接使用已经创建好的线程就能立即执 ...

  9. 多线程、线程池的创建方式,为什么阿里推荐自定义线程池?

    1.多线程的四种实现方式 * 多线程的实现方式有四种* 1.继承thread类* 2.实现runnable接口* 3.实现Callable* 实现Callable不能简单把Callable对象传给th ...

  10. java 线程池数量_java线程池及创建多少线程合适

    java线程池 1.以下是ThreadPoolExecutor参数完备构造方法: public ThreadPoolExecutor(int corePoolSize,int maximumPoolS ...

最新文章

  1. [工具]sublime text2-前端开发利器
  2. JUC——线程同步锁(ReentrantLock)
  3. 基于labview的温湿度数据采集_【零偏原创】基于FPGA的多路SPI接口并行数据采集系统...
  4. .net core 监听性能,异常
  5. SharePoint入门识记-整体架构
  6. 【CDN】域名无法访问,ping不到,tracert不到
  7. FreeModbus TCP传输初始化
  8. Protobuf生成Java代码(Maven)
  9. fastclick源码简析
  10. 随记 elasticsearch
  11. python能做什么-学Python能做什么?
  12. 黑月教主去水印软件_去除图片/视频去水印!这个软件可以帮助你!
  13. 配色表 色卡 前段色彩
  14. cmd下批量pingIP地址
  15. azul zing_Azul垃圾收集器
  16. 计算机重新装xp系统软件,关于安装软件重启XP电脑后软件不见的处理方法
  17. maximo邮件配置
  18. Poco C++库简介
  19. echarts中设置地图背景图片
  20. 29.深度学习模型压缩方法-3

热门文章

  1. 读取pandas修改单列数据类型
  2. 论文笔记之:Multiple Feature Fusion via Weighted Entropy for Visual Tracking
  3. ​Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
  4. Windows Server 2012下安装Hyper-V虚拟机
  5. GetCallbackEventReference实用讲解
  6. 实战应对三种因素引起的交换故障
  7. 智能布线—更好的安全性
  8. Mina2.0框架源码剖析(八)
  9. ADO与ADO.NET
  10. 【正一专栏】内马尔要走快走、走好不送!