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大参数及自定义线程池相关推荐

  1. 自定义线程池内置线程池的使用 ThreadPoolExecutor和Executorservice 示例与注意事项

    文章目录 线程池介绍 自己设计一个线程池 1.设计ThreadPool类: 2.设计工作队列 3.实现自己设计的线程池 用java的ThreadPoolExecutor自定义线程池 自定义线程池-参数 ...

  2. 四种常用线程池及自定义线程池参数详细分析

    文章目录 一.什么是线程池 二.常用的更方便的Executors工厂方法 三.自定义线程池 四.缓冲队列BlockingQueue 五. 排队的三种一般策略 六.拒绝策略 一.什么是线程池 线程池(英 ...

  3. 一文搞懂Java自定义线程池参数

    背景: 线程是一个开发经常使用的东西,但是实际工作中很少有新建一个线程去执行任务,线程的创建和销毁都会耗费资源,我们一般都会用线程池来完成线程的创建和销毁. 多说一句 JDK自带的线程池不建议大家去使 ...

  4. 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )

    文章目录 一.线程池阻塞队列 二.拒绝策略 三.使用 ThreadPoolExecutor 自定义线程池参数 一.线程池阻塞队列 线程池阻塞队列是线程池创建的第 555 个参数 : BlockingQ ...

  5. 自定义线程池-参数设计分析

    自定义线程池-参数设计分析 通过观察Java中的内置线程池参数讲解和线程池工作流程总结,我们不难发现,要设计一个好的线程池,就必须合理的设置线程池的4个参数;那到底该如何合理的设计4个参数的值呢?我们 ...

  6. 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等

    Executor 接口关系 Callable:类似于Runnable,但是可以有返回值 Future:存储将来执行的结果.Callable被执行完之后的结果,被封装到Future里面. Future ...

  7. Android 自定义线程池的实战

    前言:在上一篇文章中我们讲到了AsyncTask的基本使用.AsyncTask的封装.AsyncTask 的串行/并行线程队列.自定义线程池.线程池的快速创建方式. 对线程池不了解的同学可以先看 An ...

  8. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  9. SpringBoot 自定义线程池

    文章目录 一.自定义线程池 1. yml配置 2. 线程池配置属性类 3. 开启异步线程支持 4. 创建自定义线程池配置类 5. service逻辑层 6. controller控制层 7. 效果图 ...

最新文章

  1. linux nginx ssl 文件路径,linux – 如何将SSL证书从Apache服务器传输到NGINX服务器
  2. 投稿须知 | 让你的文字被很多很多很多人看到
  3. 【Blog.Core开源】网关自定义认证鉴权与传参
  4. 使用Java 8防止日志过宽
  5. ASP.NET Web API中的返回值
  6. linux如何标识用户账号和组账号,linux管理用户和组
  7. 《飞鸽传书2007怎么用》这种即时通讯技术已开始普及
  8. 2018一季度app Top500榜单,谁在抢线上最后的流量?
  9. Struts2的ValueStack(值栈)介绍
  10. Android项目导入时,出现的Could not write file 。。。.classpath错误的解决办法
  11. lambda表达式学习(详细理解 ) 重点在最后
  12. python换行输出三个数中最大数_关于Python 3中print函数的换行详解
  13. arduino和轮毂电机接线_丰田Prius B电机技术解析
  14. 20. Django进阶:生成csv文件
  15. 符号“”和const在函数里不同位置的用法
  16. Linux版Silverlight - Moonlight宣布停止更新
  17. CAT扫盲:最常用的CAT翻译软件
  18. matplotlib + cartopy 画空间趋势图并标注显著性
  19. [转]FTP搜索引擎的设计与实现 1
  20. 一图帮你了解什么是信息与计算科学专业

热门文章

  1. MySQL删除大量数据脚本
  2. wangeditor 两个editor失焦解决办法
  3. 论文写作总结(一)初级版
  4. List泛型的类型转换
  5. 苹果平板怎么卸载软件_手机系统自带软件没用还占内存,到底怎么才能卸载?其实很简单!...
  6. Permissions 0664 for ‘yanyongx.pem‘ are too open.
  7. 内存不能为read/written 问题的简单解决办法
  8. SSH连接方式及加密方式
  9. 考研英语 - word-list-39
  10. 外呼系统的四大技术原理,电销外呼系统常识