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