死锁篇:线程饥饿死锁问题

引言

前面介绍的锁顺序死锁和协作对象间调用而引发的死锁问题,都是因为请求锁而不得导致的,本文将介绍一种新的死锁情况,它产生的直接原因不是得不到锁,而是得不到资源,比如,线程池调度过程中,某个任务因得不到线程资源,一直等待、继而 “饿死” 的一种死锁情况。

这种死锁常发生在单线程或者工作线程数特别小的线程池中, Timer 或者线程池大小为 1 的 ThreadPoolExecutor 容易发生资源饥饿死锁 ,一起来看看它的产生过程和破解方案吧。

线程饥饿死锁概述

《Java并发编程实践》中对线程饥饿死锁的解释是这样的:

在使用线程池执行任务时,如果任务

猜你喜欢

转载自blog.csdn.net/wojiushiwo945you/article/details/103650770