本帖最后由 pandapan 于 2014-5-14 22:27 编辑
不愧是程序员呀,上来都喜欢直接写代码, 这样直接写出来确实证明自己很强悍,但是是不是符合提问者的要求呢?
1.多线程中死锁确实是要求掌握的,尤其是如果想做安卓方面的,这个属于多线程的必备知识,面试中应该会经常遇到的。
2.开发过程中一般是没有人故意写死锁的程序的,但是不免还是会遇到的,遇到之后就要会解决,因而就要理解死锁的发生
3.死锁的发生,是伴随着抢占资源而发生的,比如说线程A和线程B在运行着,A先抢占LockA锁,获得后然后才会去获得LockB锁,而线程B在运行时先会抢占LockB锁,获得后然后才会去获得LockA锁。我们应该知道的是线程会在任意时刻切换,因而有可能发生的是线程A恰好抢了LockA后,CPU切换了线程B运行,线程B恰好抢了LockB后继续运行,此时A要继续运行需要LockB,但是已经被B用着,B要继续运行需要LockA,但是已经被A用着,因而两个线程就开始相互僵持着,就死锁了。
4.至于例子嘛,就是 @钟成军 所写的经典案例,记得毕向东老师在java基础视频中讲到过,你可以再学习学习细节。 |