多线程
1. 对死锁的了解,怎么解决?
1. 概念
不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成的线程的死锁。举个例子,哲学家就餐问题,一人只有一个筷子,需要两只筷子才能吃饭。
2.产生的条件
互斥条件,占用且等待,不可以抢夺,循环等待。四个条件同时出现会触发死锁。
3.解决办法
让产生的条件不成立。
条件1:基本上无法被破坏,因为线程需要通过互斥解决安全问题
条件2:考虑一次性申请所有的资源,就不存在等待问题
条件3:占用资源的线程在进一步申请其他资源时,如果申请不到,就主动释放掉已经占用的资源
条件4:可以将资源改为线性资源,申请资源时,先申请序号较小的,这样可以避免循环等待的问题