多线程的活跃性问题

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

如何避免饥饿问题

对于优先级引发的饥饿问题,用setPriority设置线程的优先级。
对于永久阻塞引发的饥饿问题,用锁来代替synchronized。

猜你喜欢

转载自blog.csdn.net/qqqq0199181/article/details/80979545