黑马程序员技术交流社区

标题: 关于多线程的同步和死锁问题。 [打印本页]

作者: 悟中生有    时间: 2013-12-13 15:36
标题: 关于多线程的同步和死锁问题。
本帖最后由 悟中生有 于 2013-12-13 15:58 编辑

在多线程里面,多线程的同步和死锁是不是对立的?
多线程同步的前提是:
1,同步需要两个或者两个以上的线程。
2,多个线程使用的是同一个锁。
未满足这两个条件,不能称其为同步。

死锁是多线程在使用两个锁的时候造成的。

不知道我这样理解是不是对的,求解?望高手指教!!!

作者: 丑男先生。    时间: 2013-12-13 15:50
我个人的理解是:仅供参考啊:同步,,就是多线程访问同一个资源,存在安全问题,,就必须加同步就是上锁嘛,一次只能有一个线程访问一个资源,这个线程访问完出来后,别的线程才有资格去访问,不然线程的切换 会造成安全隐患。。。
死锁,,是发生在同步的基础上的,就是说 有两个以上资源,分别加了同步,然后多个线程分别访问不同资源的时候 由于每个锁里面是相互有联系的,,这几个线程就在里面 不能访问资源,就阻塞在里面了,,说的通俗点 就是占着茅坑不拉屎,,,然后外面排队的人进不去,,里面的人也出不来,,那么程序就卡在那里了,,不人为干涉,,程序不就结束的
作者: 汪伟楠    时间: 2013-12-13 15:51

多线程同步的前提是:
1,同步需要两个或者两个以上的线程。
2,多个线程使用的是同一个锁。
必须保证同步中只能有一个线程在运行。
死锁:同步嵌套同步
死锁产生的条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

作者: 悟中生有    时间: 2013-12-13 15:56
丑男先生。 发表于 2013-12-13 15:50
我个人的理解是:仅供参考啊:同步,,就是多线程访问同一个资源,存在安全问题,,就必须加同步就是上锁嘛 ...

谢谢!明白了。
作者: 悟中生有    时间: 2013-12-13 15:57
汪伟楠 发表于 2013-12-13 15:51
多线程同步的前提是:
1,同步需要两个或者两个以上的线程。
2,多个线程使用的是同一个锁。

谢谢!看明白了。
作者: 丑男先生。    时间: 2013-12-13 16:02
悟中生有 发表于 2013-12-13 15:56
谢谢!明白了。

没事的,共同学习 啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2