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 先进先出,非阻塞