本文主要是介绍chapter3:JDK并发包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
3.1.7. 线程阻塞工具类:LockSupport
park():阻塞当前线程
parkNanos()、parkUntil():限时等待
unpark():恢复执行
和Threak.suspend相比,它弥补了在resume之前发生,导致线程无法继续执行的情况。和wait相比,它不需要先获得锁,也不会抛出InterruputException,但接收到中断后,仍然会响应,继续向下执行,此时要用Thread.interrupted()清除中断标志位。
3.2 线程池
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 先进先出,非阻塞
这篇关于chapter3:JDK并发包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!