避免死锁的方式

1、加锁顺序保持一致
2、加锁不成功,立即释放所有抢占到的锁
3、银行家算法

银行家算法:
使用向量维护所有闲置资源
每个进程不断申请的资源向量已知
比如P0进程 需要申请a向量,还需要申请b向量
P1进程需要申请c向量,还需要申请d向量

通过预判演算出一种安全序列,谁先申请谁后申请,谁先释放,释放后在申请。争取实现资源的最大化利用。
但是这种算法不现实,因为每个进程申请的资源是不可预知。
每个进程请求资源时,先预判是否满足,不满足则挂起等待

你可能感兴趣的:(java)