chapter3:JDK并发包

本文探讨了线程阻塞工具类LockSupport的使用方法,包括park、parkNanos、parkUntil及unpark等方法的特点,并对比了与Thread.suspend及wait的区别。此外,还介绍了线程池大小的经验公式,以及如何通过扩展ThreadPoolExecutor来增加线程堆栈信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1.7. 线程阻塞工具类:LockSupport
park():阻塞当前线程
parkNanos()、parkUntil():限时等待
unpark():恢复执行
和Threak.suspend相比,它弥补了在resume之前发生,导致线程无法继续执行的情况。和wait相比,它不需要先获得锁,也不会抛出InterruputException,但接收到中断后,仍然会响应,继续向下执行,此时要用Thread.interrupted()清除中断标志位。

3.2 线程池

Executor框架结构图

3.2.7 线程池大小的经验公式:
Ncpu = cpu的数量
Ucpu = 目标cpu的使用率 0<=Ucpu<=1
W/C = 等待时间与计算时间的比率
为保持处理器到达期望的使用率,最优池的大小等于:
Nthreads=Ncpu*Ucpu*(1+W/C)
Java中获取cpu数量:Runtime.getRuntime().awailableProcessors();

3.2.3 扩展ThreadPoolExecutor,增加线程堆栈信息
3.3.4 深度剖析concurrentlinkedQueue 先进先出,非阻塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值