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