Java 线程池源码解读与实践
肖文英
Java 资深研发工程师
9 人已学习
立即订阅
课程目录
已更新 25 讲/共 32 讲
并发编程基础知识 (8讲)
时长 09:08
时长 40:33
时长 21:26
时长 44:37
时长 09:11
线程池基础知识 (6讲)
时长 30:59
时长 41:30
时长 40:33
时长 15:15
线程池实现详解 (8讲)
时长 14:10
时长 23:21
时长 25:00
时长 13:57
时长 35:44
时长 17:37
时长 34:03
常见开源线程池 (3讲)
时长 22:14
时长 25:32
Java 线程池源码解读与实践
登录|注册
留言
收藏
沉浸
阅读
分享
手机端
回顶部
付费课程,可试看

视频资源获取失败

线程
异常
线程对象内存管理
jstack
并发编程三大问题
中断线程
CAS模式
Lock和Condition接口
线程池初步认识
简单实现线程池
线程池属性
线程池类型
最佳实践
监控和调参
执行任务
添加工作线程
运行工作线程
获取任务
关闭线程池
治理线程池
获取线程池统计信息
提交任务
Tomcat线程池
Spring Boot线程池
Dubbo线程池
本节摘要

1 线程阻塞

线程阻塞通常是指一个线程在执行过程中暂停,以等待某个条件的触发。而什么情况才会使得线程进入阻塞的状态呢?

等待阻塞:运行的线程执行 wait() 方法,该线程会释放占用的所有资源,JVM 会把该线程放入“等待池”中。进入这个等待状态 (WAITING) 后,是不能自动唤醒的,必须依靠其它线程调用 notify() 或 notifyAll() 方法才能被唤醒,或者是被中断后才能唤醒,然后被调度后开始运行或同步阻塞。

同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁 (synchronized) 被别的线程占用,则 JVM 会把该线程放入“锁池”中,注意这种阻塞 (BLOCKED) 是不能被打断的。

还有运行的线程执行 sleep() 或 join() 方法,或者发出了可以中断的 I/O 请求时,JVM 会把该线程置为等待 (WAITING) 状态:当 sleep() 状态超时、join() 等待线程终止或者超时、或者可以中断的 I/O 处理完毕时,线程重新转入运行状态 (被调度后开始运行或等待调度);此外线程被中断后也能进入运行状态。

在 Java 中,最好...

登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论