线程池

你的未来由你决定

  阻塞队列(blockQueue)

线程池=银行网点

corePoolSize, 线程池常驻核心线程数  今日当值线程
maximumPoolSize, 最大线程数 (加班窗口)
keepAliveTime, 多余的空闲线程的存活时间
unit, 存活单位
workQueue, 阻塞队列 等候区 Executors.defaultThreadFactory(), 线程工厂 工作人员的制服
defaultHandler 拒绝策略

 线程池 maximumPoolSize,启用的时候,是在阻塞队列满了之后,线程数进行扩容,最大线程数也满了之后,会进到拒绝策略中

 线程池创建:

  Executors

  ThreadPoolExecutor

 线程配置:

  CPU密集型:cpu核数+1

  IO密集型:1.cpu核数*2

       2.线程数=cpu可用核心数/(1-阻塞系数)   阻塞系数:0.8-0.9

学到皮 学到骨 学到肉 学到筋 学到魂

死锁编码定位:

  是什么:两个或两个以上的线程在执行过程中,相互争夺资源而造成的一种相互等待的现象

  代码:

 new Thread(new HoldLockThread(lockA, lockB), "AAA").start();
        new Thread(new HoldLockThread(lockB, lockA), "BBB").start();

  解决:

   jps l 命令定位进程号

  jstack xx 找到死锁查看

  

Unkonw Unkonw(你不知道一样东西,你也会不知道自己不知道这样东西)
原文地址:https://www.cnblogs.com/2014-1130/p/15409673.html