Java多线程之线程池详解


目录:

  1. 线程池使用及优势
  2. 线程池3个常用方式
  3. 线程池7大参数深入介绍
  4. 线程池底层工作原理

1. 线程池使用及优势


  1. 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,
    如果线程数量超过了最大数量 超出数量的 线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。
  2. 它的主要特点为:线程复用,控制最大并发数,管理线程。

优点:

  1. 降低资源消耗。通过重复利用己创建的线程降低线程创建和销毁造成的消耗。
  2. 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
  3. 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进
    行统一的分配,调优和监控

2. 线程池3个常用方式


Java中的线程池是通过Executor框架实现的,该框架中用到了Executor,Executors,
ExecutorService,ThreadPoolExecutor这几个类。
线程池3个常用方式:

  1. Executors.newFixedThreadPool(int) :执行长期任务,性能好很多
  2. Executors.newSingleThreadExecutor() : 一个任务一个任务执行的场景
  3. Executors.newCachedThreadPooI() : 执行很多个短期异步的小程序或者负载较轻的服务器。

先看代码,再根据源码总结


1. Executors.newFixedThreadPool(int)


  1. Executors.newFixedThreadPool(int)概述
  2. 代码验证
public class MyThreadPoolDemo {public static void main(String[] args) {//        1池5个处理线程ExecutorService threadPool = Executors.newFixedThreadPool(5);//        模拟10个用户来办理业务,每个用户就是一个来自外部的请求线程。try {for (int i = 1; i <= 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName()+"\t 办理业务");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}}
}
  1. 执行结果:

2. Executors.newSingleThreadExecutor()


  1. Executors.newSingleThreadExecutor()概述
  2. 代码验证
public class MyThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newSingleThreadExecutor();try {//        模拟10个用户来办理业务,每个用户就是一个来自外部的请求线程。for (int i = 1; i <= 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName()+"\t 办理业务");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}}
}
  1. 执行结果:

3. Executors.newCachedThreadPooI()


  1. Executors.newCachedTIyeadPooI() 概述

  2. 代码验证:

public class MyThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newCachedThreadPool();try {
//        模拟10个用户来办理业务,每个用户就是一个来自外部的请求线程。for (int i = 1; i <= 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName() + "\t 办理业务");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}}
}
  1. 执行结果:

3. 线程池7大参数深入介绍


篇幅限制,另开一篇详细说明。
Java多线程之线程池7大参数详解


4. 线程池底层工作原理

篇幅限制,另开一篇详细说明。
Java多线程之线程池底层工作原理

Java多线程之线程池详解相关推荐

  1. 【java】java多线程及线程池详解

    目录 前言 线程是什么?多线程是什么? 多线程的作用和好处以及缺点 守护线程和用户线程 并发和并行的区别 一.线程的状态和常用方法 1.线程各种状态转化图 2.线程相关常用方法有 ① wait() ② ...

  2. Java并发:线程池详解(ThreadPoolExecutor)

    前言 现在在实现异步时,基本都是使用线程池来实现,线程池在工作应用的还是比较频繁的,本文将就线程池的使用.相关原理和主要方法源码进行深入讲解学习. 线程池的基本使用 package com.joonw ...

  3. Java笔记之线程池详解

    文章目录 一.线程池是什么? 二.为什么要使用线程池? 三.jdk自带的四种线程池 1. 线程池参数 2.工作队列 3.拒绝策略 4.四种线程池一些示例 四.自定义线程池 一.线程池是什么? 一种线程 ...

  4. java线程池详解及五种线程池方法详解

    基础知识 Executors创建线程池 Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThrea ...

  5. Java多线程之线程池7大参数、底层工作原理、拒绝策略详解

    Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...

  6. Java 线程池详解及实例代码

    转载自  Java 线程池详解及实例代码 这篇文章主要介绍了Java 线程池的相关资料,并符实例代码,帮助大家学习参考,需要的朋友可以参考下 线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时 ...

  7. Java中线程池详解

    一.线程池简介 线程池的概念 线程池就是首先创建一些线程,它们的集合称为线程池,使用线程池可以很好的提高性能,线程池在系统启动时既创建大量空闲的线程,程序将一个任务传给线程池.线程池就会启动一条线程来 ...

  8. Java线程池详解学习:ThreadPoolExecutor

    Java线程池详解学习:ThreadPoolExecutor Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) - zhangpeterx的博客 在源码的目录java/util/ ...

  9. Java 线程池详解学习:FixedThreadPool,CachedThreadPool,ScheduledThreadPool...

    Java常用的线程池有FixedThreadPool和CachedThreadPool,我们可以通过查看他们的源码来进行学习. Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) ...

最新文章

  1. 文档管理套包Aspose.Total 5月更新 | 附下载
  2. 2D简单图形相关算法罗列
  3. 汉文博士 0.5.6 正式版发布
  4. poi 默认2位小数_odoo小数精确度
  5. IF_BSP_WD_HISTORY_STATE_DESCR~IS_RESTORABLE的用法
  6. 学习笔记-------两阶段提交 2PC
  7. 哪些原因会导致rs485转换器信号受干扰?
  8. 三星全速进军物联网 所有产品都将内置互联功能
  9. Java多线程系列(四):4种常用Java线程锁的特点,性能比较、使用场景
  10. 漫步数理统计四——概率集合函数(下)
  11. 函数参数中的中括号代表什么
  12. php mysql网站设计_基于PHP和MySQL的网站设计与实现
  13. VS2015下安装Visual_Assist_x破解版
  14. 如何让exe以管理员权限运行
  15. ANSI-美国国家标准学会
  16. 2019牛客多校第八场 BBeauty Values dp
  17. Delphi单元文件Unit详解
  18. “算力经济”时代扑面而来,智算中心成未来数据中心进化方向
  19. 内网异地备份_服务器数据全自动异地备份解决方案
  20. 实战 | 安服仔用一毛钱维修台伊拉克成色笔记本(上)

热门文章

  1. python2.6 2.7 升级成3.6之后yum
  2. iOS开发-编译出错 duplicate symbols for architecture x86_64
  3. 微信营销这么做,你就成功了 转载
  4. 趣味编程:C#中Specification模式的实现
  5. 翻身做主--给自己的软件制作注册码
  6. CodeForces - 967D Resource Distribution(贪心+二分+构造)
  7. 牛客 - 牛半仙的妹子图(并查集+bitset/克鲁斯卡尔重构树+主席树)
  8. MMDetection-配置文件
  9. 数据分析与挖掘理论-数据预处理
  10. 2013计算机大纲,2013计算机应用基础考试大纲