在前面的例子中,我们都是通过new Thread来创建一个线程,由于线程的创建和销毁都需要消耗一定的CPU资源,所以在高并发下这种创建线程的方式将严重影响代码执行效率。而线程池的作用就是让一个线程执行结束后不马上销毁,继续执行新的任务,这样就节省了不断创建线程和销毁线程的开销。 ThreadPool ...
分类:
编程语言 时间:
2019-08-28 21:09:32
阅读次数:
167
前言 在实际工作中,线程是一个我们经常要打交道的角色,它可以帮我们灵活利用资源,提升程序运行效率。但是我们今天不是探讨线程!我们今天来聊聊另一个与线程息息相关的角色:线程池.本篇文章的目的就是全方位的解析线程池的作用,以及jdk中的接口,实现以及原理,另外对于某些重要概念,将从源码的角度探讨。 ti ...
分类:
编程语言 时间:
2019-08-25 18:17:41
阅读次数:
89
public class CountDownLatchTest1 implements Runnable{ final AtomicInteger number = new AtomicInteger(); volatile boolean bol = false; @Override public... ...
分类:
编程语言 时间:
2019-08-20 18:27:16
阅读次数:
108
这是java高并发系列第29篇。 环境:jdk1.8。 本文内容 1. 介绍常见的限流算法 2. 通过控制最大并发数来进行限流 3. 通过漏桶算法来进行限流 4. 通过令牌桶算法来进行限流 5. 限流工具类RateLimiter 常见的限流的场景 1. 秒杀活动,数量有限,访问量巨大,为了防止系统宕 ...
分类:
编程语言 时间:
2019-08-20 17:01:47
阅读次数:
105
线程池关闭 shutdown 不接新任务,但会处理完正在处理和队列里的任务 shutdownNow 不接新任务,中断interrupt正在处理的任务(任务可中断才可以,否则不受影响),返回队列里的任务list awaitTermination 等待指定时间后,线程池关闭返回true,否则返回fals ...
分类:
编程语言 时间:
2019-08-17 19:55:05
阅读次数:
92
缺少更多功能,如更多执行,定期执行,线程中断 ...
分类:
编程语言 时间:
2019-08-07 20:55:43
阅读次数:
106
java中的线程池,这一篇就够了 java高并发系列第18篇文章。 本文主要内容 1. 什么是线程池 2. 线程池实现原理 3. 线程池中常见的各种队列 4. 自定义线程创建的工厂 5. 常见的饱和策略 6. 自定义饱和策略 7. 线程池中两种关闭方法有何不同 8. 扩展线程池 9. 合理地配置线程 ...
分类:
编程语言 时间:
2019-07-29 09:48:08
阅读次数:
105
今天给大家带来一个关于java线程池的资料,主要是因为在早些时候去面试的时候就被问到了线程池的问题,回答的不尽人意,今天突然有人问我一个同样的问题,我觉的我还是总结一下,看起来也方便。 Java提供的几种线程池线程池,顾名思义,放线程的池子嘛,这个池子可以存放多少线程取决于你自己采用什么样的线程池, ...
分类:
编程语言 时间:
2019-07-25 16:09:07
阅读次数:
113
JDK1.5 引入了 Executor框架 ,对任务提交和执行进行解耦 , 定义任务后交由线程池执行。 线程池是由java.util.concurrent 包中Executors类的工厂方法创建线程池。 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。 public stati ...
分类:
编程语言 时间:
2019-07-18 19:57:37
阅读次数:
146
摘字智选文章 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服 ...
分类:
编程语言 时间:
2019-07-16 10:47:32
阅读次数:
131