狂神JUC——7大参数及自定义线程池
JUC | |
---|---|
1 | 狂神JUC——传统的Synchronized锁 |
2 | 狂神JUC——Lock锁 |
3 | 狂神JUC——Lock版生产者和消费者 |
4 | 狂神JUC——Synchronized版的生产者和消费者问题 |
5 | 狂神JUC——8锁现象彻底理解锁 |
6 | 狂神JUC——集合不安全 |
7 | 狂神JUC——走近Callable |
8 | 狂神JUC——CountDownLatch,CyclicBarrier,Semaphore |
9 | 狂神JUC——读写锁 |
10 | 狂神JUC——阻塞队列 |
11 | 狂神JUC——同步队列 |
12 | 狂神JUC——线程池 |
13 | 狂神JUC——7大参数及自定义线程池 |
14 | 狂神JUC——四大函数接口 |
15 | 狂神——Stream流式计算 |
16 | 狂神——链式编程 |
17 | 狂神JUC——ForkJoin |
18 | 狂神JUC——异步回调 |
19 | 狂神JUC——单例模式 |
20 | 狂神JUC——CAS |
21 | 狂神JUC——可重入锁 |
22 | 狂神JUC——自旋锁 |
package com.company.thread_pool;import java.util.concurrent.BlockingQueue;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;//7种参数
public class SevenKindsOfParameters {// public ThreadPoolExecutor(int corePoolSize, //1、核心线程池大小
// int maximumPoolSize, //2、最大核心线程池大小
// long keepAliveTime, //3、超时没有调用就会释放
// TimeUnit unit, //4、超时单位
// BlockingQueue<Runnable> workQueue, //5、阻塞队列
// ThreadFactory threadFactory //6、线程工厂,一般不修改
// RejectedExecutionHandler handle //7、拒绝策略
}
package com.company.thread_pool;import java.util.concurrent.*;/**4种拒绝策略:* new ThreadPoolExecutor.AbortPolicy() // 银行满了,还有人进来,不处理这个人的,抛出异常* new ThreadPoolExecutor.CallerRunsPolicy() // 哪来的去哪里!* new ThreadPoolExecutor.DiscardPolicy() //队列满了,丢掉任务,不会抛出异常!* new ThreadPoolExecutor.DiscardOldestPolicy() //队列满了,尝试去和最早的竞争,也不会抛出异常!*//**maximumPoolSize该如何设置:* 1、CPU密集型:几核就是几,可以保存CPU的效率最高!* 2、IO密集型:判断你程序中十分耗费IO的线程** 获取CPU的核数:*Runtime.getRuntime().availableProcessors()*/
public class RejectionPolicies {public static void main(String[] args) {//不推荐使用3大方法//自定义线程池ExecutorService threadPool = new ThreadPoolExecutor(2,5,3,TimeUnit.SECONDS,new LinkedBlockingQueue<>(3),Executors.defaultThreadFactory(),//一种拒绝策略(队列满了,尝试和最早的去竞争,也不会抛出异常)new ThreadPoolExecutor.DiscardOldestPolicy()//new ThreadPoolExecutor.CallerRunsPolicy()//new ThreadPoolExecutor.AbortPolicy()//new ThreadPoolExecutor.DiscardPolicy());try{//9 > 5(maximumPoolSize) + 3(阻塞队列) ,让最后一个线程尝试和第一个竞争for (int i = 0; i < 9; i++) {threadPool.execute(()->{System.out.println(Thread.currentThread().getName()+"ok");});}}catch (Exception e){e.printStackTrace();}finally {//关闭线程池threadPool.shutdown();}}
}
详细信息请看狂神视频
狂神JUC——7大参数及自定义线程池相关推荐
- 自定义线程池内置线程池的使用 ThreadPoolExecutor和Executorservice 示例与注意事项
文章目录 线程池介绍 自己设计一个线程池 1.设计ThreadPool类: 2.设计工作队列 3.实现自己设计的线程池 用java的ThreadPoolExecutor自定义线程池 自定义线程池-参数 ...
- 四种常用线程池及自定义线程池参数详细分析
文章目录 一.什么是线程池 二.常用的更方便的Executors工厂方法 三.自定义线程池 四.缓冲队列BlockingQueue 五. 排队的三种一般策略 六.拒绝策略 一.什么是线程池 线程池(英 ...
- 一文搞懂Java自定义线程池参数
背景: 线程是一个开发经常使用的东西,但是实际工作中很少有新建一个线程去执行任务,线程的创建和销毁都会耗费资源,我们一般都会用线程池来完成线程的创建和销毁. 多说一句 JDK自带的线程池不建议大家去使 ...
- 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )
文章目录 一.线程池阻塞队列 二.拒绝策略 三.使用 ThreadPoolExecutor 自定义线程池参数 一.线程池阻塞队列 线程池阻塞队列是线程池创建的第 555 个参数 : BlockingQ ...
- 自定义线程池-参数设计分析
自定义线程池-参数设计分析 通过观察Java中的内置线程池参数讲解和线程池工作流程总结,我们不难发现,要设计一个好的线程池,就必须合理的设置线程池的4个参数;那到底该如何合理的设计4个参数的值呢?我们 ...
- 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等
Executor 接口关系 Callable:类似于Runnable,但是可以有返回值 Future:存储将来执行的结果.Callable被执行完之后的结果,被封装到Future里面. Future ...
- Android 自定义线程池的实战
前言:在上一篇文章中我们讲到了AsyncTask的基本使用.AsyncTask的封装.AsyncTask 的串行/并行线程队列.自定义线程池.线程池的快速创建方式. 对线程池不了解的同学可以先看 An ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- SpringBoot 自定义线程池
文章目录 一.自定义线程池 1. yml配置 2. 线程池配置属性类 3. 开启异步线程支持 4. 创建自定义线程池配置类 5. service逻辑层 6. controller控制层 7. 效果图 ...
最新文章
- linux nginx ssl 文件路径,linux – 如何将SSL证书从Apache服务器传输到NGINX服务器
- 投稿须知 | 让你的文字被很多很多很多人看到
- 【Blog.Core开源】网关自定义认证鉴权与传参
- 使用Java 8防止日志过宽
- ASP.NET Web API中的返回值
- linux如何标识用户账号和组账号,linux管理用户和组
- 《飞鸽传书2007怎么用》这种即时通讯技术已开始普及
- 2018一季度app Top500榜单,谁在抢线上最后的流量?
- Struts2的ValueStack(值栈)介绍
- Android项目导入时,出现的Could not write file 。。。.classpath错误的解决办法
- lambda表达式学习(详细理解 ) 重点在最后
- python换行输出三个数中最大数_关于Python 3中print函数的换行详解
- arduino和轮毂电机接线_丰田Prius B电机技术解析
- 20. Django进阶:生成csv文件
- 符号“”和const在函数里不同位置的用法
- Linux版Silverlight - Moonlight宣布停止更新
- CAT扫盲:最常用的CAT翻译软件
- matplotlib + cartopy 画空间趋势图并标注显著性
- [转]FTP搜索引擎的设计与实现 1
- 一图帮你了解什么是信息与计算科学专业
热门文章
- MySQL删除大量数据脚本
- wangeditor 两个editor失焦解决办法
- 论文写作总结(一)初级版
- List泛型的类型转换
- 苹果平板怎么卸载软件_手机系统自带软件没用还占内存,到底怎么才能卸载?其实很简单!...
- Permissions 0664 for ‘yanyongx.pem‘ are too open.
- 内存不能为read/written 问题的简单解决办法
- SSH连接方式及加密方式
- 考研英语 - word-list-39
- 外呼系统的四大技术原理,电销外呼系统常识