你的未来由你决定
阻塞队列(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 找到死锁查看