死锁:是指两个或两个以上的进程( 或线程) 在执行过程中,因争夺资源而造成的一种==互相等待==的现象,若无外力作用, 它们都将无法推进下去。
活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。
活锁一般是由于对死锁的不正确处理引起的。由于处于死锁中的多个线程同时采取了行动。 而避免的方法也是只让一个线程释放资源。
饥饿:一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执行的状态。
避免饥饿就应该是采用队列的方式,保证每个人都有机会获得请求的资源。 当然实现方式可以很多个变化,比如优先级,时间片等,都是“队列”的特殊形式保证每个人都有机会获得请求的资源。