- 死锁:两个线程相互等待对方释放资源
- 饥饿:
- 多线程并发时,优先级低的线程永远得不到执行
- 线程被永久阻塞在等待进入同步块的状态
- 等待的线程永远不被唤醒
- 活锁:活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。处于活锁的实体是在不断的改变状态,活锁有可能自行解开。
如何避免饥饿问题
对于优先级引发的饥饿问题,用setPriority设置线程的优先级。
对于永久阻塞引发的饥饿问题,用锁来代替synchronized。
对于优先级引发的饥饿问题,用setPriority设置线程的优先级。
对于永久阻塞引发的饥饿问题,用锁来代替synchronized。