我看到的一位马友答案:产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 在毕老师的视频中有例子,其中讲到线程安全问题。多个线程执行多条语句并共享数据时,一个线程只执行了语句的一部分,还没执行完,另外的线程参与进来执行,导致共享数据的错误。 解决方法:合理的利用“锁”可以避免出现死锁。当访问共享数据时,给数据加锁,防止其他线程同时对数据进行访问。直到该线程访问完毕释放“锁” |