livelock

2018-03-27  本文已影响0人  lqsss

例子

活锁:是指线程1可以使用资源,但它很礼貌,让其他线程先使用资源,线程2也可以使用资源,但它很绅士,也让其他线程先使用资源。这样你让我,我让你,最后两个线程都无法使用资源。

p1 lock A
p2 lock B
p1 acquire B fail
p2 acquire A fail
P1、P2发现获取失败,则释放
p1 release
p2 release
...
P1、P2释放锁,再次重试
p1 lock A
p2 lock B
...

活锁死锁的区别

双方本质:都是因为上锁的顺序不正确而导致
死锁:获取不到资源,进程就会处于阻塞状态
活锁:获取不到资源,依旧处于Runnable状态,在不停地尝试获取,但是在做无用功。

饥饿和死锁

不同点:

上一篇 下一篇

猜你喜欢

热点阅读