09-结果分析
结果分析
按照如上规则可以避免死锁。例如,在之前的例子中,把 operation2() 修改为先获取 lock1 再获取 lock2 。这样, operation1() 和 operation2() 在同时执行各自的第一条语句时,会有一个因等待 lock1 而被阻塞,而另一个在获取到 lock1 之后,也将获取到 lock2 ,它可以继续执行。执行完之后释放锁,被阻塞的线程随之获取 lock1 和 lock2 ,然后进行后续的操作。
按照如上规则可以避免死锁。例如,在之前的例子中,把 operation2() 修改为先获取 lock1 再获取 lock2 。这样, operation1() 和 operation2() 在同时执行各自的第一条语句时,会有一个因等待 lock1 而被阻塞,而另一个在获取到 lock1 之后,也将获取到 lock2 ,它可以继续执行。执行完之后释放锁,被阻塞的线程随之获取 lock1 和 lock2 ,然后进行后续的操作。