黑马程序员技术交流社区
标题:
请详细解释什么是死锁?
[打印本页]
作者:
蒲公英在飞
时间:
2014-7-17 08:42
标题:
请详细解释什么是死锁?
请详细解释什么是死锁?
作者:
zhxu188
时间:
2014-7-17 08:52
死锁是指多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。因为线程被无限期地阻塞,因此程序不可能正常终止。
导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。“synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执行特定的代码块,因此,被允许执行的线程首先必须拥有对变量或对象的独自访问权。当线程访问对象时,线程会给对象加锁,而这个锁导致其它也想访问同一对象的线程被阻塞,直至第一个线程释放它加在对象上的锁。 如果在线程访问对象时,遇到了其他线程的锁,而这个锁还没有被释放,那么该线程虽然对操作对象加上了锁,但无法访问,而其他对象因为该线程的存在也无法操作该对象了。
作者:
人心如水
时间:
2014-7-17 09:30
简单理解 就是锁的嵌套循环,比如说两个加锁程序,其里面还都有一个锁,当我们执行线程时,Thread-0拿到执行的obj1锁,进入后里面需要obj2锁才能执行,这时cpu切换到另一个程序,Thread-1拿到执行的obj2锁,进入后需要obj1锁才能执行后面的操作,这样就死锁了。
作者:
朱道研
时间:
2014-7-17 10:50
再简单理解:甲乙吃饭,一双筷子,甲有一支,乙有一支,谁都不放筷子,谁都吃不了。线程一执行需要AB资源,二也需要AB资源,一占用了A,二占用了B,互相需要对方资源继续运行,获取不到又都无法释放自己已经占用的资源
作者:
Adjin
时间:
2014-7-17 12:40
同步嵌套,有两个锁,两个同步各拿一个锁?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2