Java多线程之线程池详解
Java多线程之线程池详解
目录:
- 线程池使用及优势
- 线程池3个常用方式
- 线程池7大参数深入介绍
- 线程池底层工作原理
1. 线程池使用及优势
- 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,
如果线程数量超过了最大数量 超出数量的 线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 - 它的主要特点为:线程复用,控制最大并发数,管理线程。
优点:
- 降低资源消耗。通过重复利用己创建的线程降低线程创建和销毁造成的消耗。
- 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
- 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进
行统一的分配,调优和监控
2. 线程池3个常用方式
Java中的线程池是通过Executor框架实现的,该框架中用到了Executor,Executors,
ExecutorService,ThreadPoolExecutor这几个类。
线程池3个常用方式:
- Executors.newFixedThreadPool(int) :执行长期任务,性能好很多
- Executors.newSingleThreadExecutor() : 一个任务一个任务执行的场景
- Executors.newCachedThreadPooI() : 执行很多个短期异步的小程序或者负载较轻的服务器。
先看代码,再根据源码总结
1. Executors.newFixedThreadPool(int)
- Executors.newFixedThreadPool(int)概述
- 代码验证
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();}}
}
- 执行结果:
2. Executors.newSingleThreadExecutor()
- Executors.newSingleThreadExecutor()概述
- 代码验证
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();}}
}
- 执行结果:
3. Executors.newCachedThreadPooI()
Executors.newCachedTIyeadPooI() 概述
代码验证:
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();}}
}
- 执行结果:
3. 线程池7大参数深入介绍
篇幅限制,另开一篇详细说明。
Java多线程之线程池7大参数详解
4. 线程池底层工作原理
篇幅限制,另开一篇详细说明。
Java多线程之线程池底层工作原理
Java多线程之线程池详解相关推荐
- 【java】java多线程及线程池详解
目录 前言 线程是什么?多线程是什么? 多线程的作用和好处以及缺点 守护线程和用户线程 并发和并行的区别 一.线程的状态和常用方法 1.线程各种状态转化图 2.线程相关常用方法有 ① wait() ② ...
- Java并发:线程池详解(ThreadPoolExecutor)
前言 现在在实现异步时,基本都是使用线程池来实现,线程池在工作应用的还是比较频繁的,本文将就线程池的使用.相关原理和主要方法源码进行深入讲解学习. 线程池的基本使用 package com.joonw ...
- Java笔记之线程池详解
文章目录 一.线程池是什么? 二.为什么要使用线程池? 三.jdk自带的四种线程池 1. 线程池参数 2.工作队列 3.拒绝策略 4.四种线程池一些示例 四.自定义线程池 一.线程池是什么? 一种线程 ...
- java线程池详解及五种线程池方法详解
基础知识 Executors创建线程池 Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThrea ...
- Java多线程之线程池7大参数、底层工作原理、拒绝策略详解
Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...
- Java 线程池详解及实例代码
转载自 Java 线程池详解及实例代码 这篇文章主要介绍了Java 线程池的相关资料,并符实例代码,帮助大家学习参考,需要的朋友可以参考下 线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时 ...
- Java中线程池详解
一.线程池简介 线程池的概念 线程池就是首先创建一些线程,它们的集合称为线程池,使用线程池可以很好的提高性能,线程池在系统启动时既创建大量空闲的线程,程序将一个任务传给线程池.线程池就会启动一条线程来 ...
- Java线程池详解学习:ThreadPoolExecutor
Java线程池详解学习:ThreadPoolExecutor Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) - zhangpeterx的博客 在源码的目录java/util/ ...
- Java 线程池详解学习:FixedThreadPool,CachedThreadPool,ScheduledThreadPool...
Java常用的线程池有FixedThreadPool和CachedThreadPool,我们可以通过查看他们的源码来进行学习. Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) ...
最新文章
- 文档管理套包Aspose.Total 5月更新 | 附下载
- 2D简单图形相关算法罗列
- 汉文博士 0.5.6 正式版发布
- poi 默认2位小数_odoo小数精确度
- IF_BSP_WD_HISTORY_STATE_DESCR~IS_RESTORABLE的用法
- 学习笔记-------两阶段提交 2PC
- 哪些原因会导致rs485转换器信号受干扰?
- 三星全速进军物联网 所有产品都将内置互联功能
- Java多线程系列(四):4种常用Java线程锁的特点,性能比较、使用场景
- 漫步数理统计四——概率集合函数(下)
- 函数参数中的中括号代表什么
- php mysql网站设计_基于PHP和MySQL的网站设计与实现
- VS2015下安装Visual_Assist_x破解版
- 如何让exe以管理员权限运行
- ANSI-美国国家标准学会
- 2019牛客多校第八场 BBeauty Values dp
- Delphi单元文件Unit详解
- “算力经济”时代扑面而来,智算中心成未来数据中心进化方向
- 内网异地备份_服务器数据全自动异地备份解决方案
- 实战 | 安服仔用一毛钱维修台伊拉克成色笔记本(上)
热门文章
- python2.6 2.7 升级成3.6之后yum
- iOS开发-编译出错 duplicate symbols for architecture x86_64
- 微信营销这么做,你就成功了 转载
- 趣味编程:C#中Specification模式的实现
- 翻身做主--给自己的软件制作注册码
- CodeForces - 967D Resource Distribution(贪心+二分+构造)
- 牛客 - 牛半仙的妹子图(并查集+bitset/克鲁斯卡尔重构树+主席树)
- MMDetection-配置文件
- 数据分析与挖掘理论-数据预处理
- 2013计算机大纲,2013计算机应用基础考试大纲