黑马程序员技术交流社区
标题:
请大神指教多线程的基本原理和死锁
[打印本页]
作者:
wjhsyy
时间:
2016-10-17 22:29
标题:
请大神指教多线程的基本原理和死锁
作者:
zhangyuren
时间:
2016-10-17 22:29
本来还想多说点.看了前面两个回答,我觉得我还太基础,就不闹腾了.分享下我的理解,大家交流下.
是这样的,首先,你要有一个概念,就是计算机在执行每一行代码的时候,都是需要消耗时间的,也就是物理时间,你简单可以理解为"执行一行代码就需要一个最小时间单元"
那在多个线程开启后,每个线程都希望抢到执行权,也都会去抢执行权.
但是对于单核来说,只能一次执行一个
也就是说一个最小的时间单元只能执行一个.
这样的话,在我们实现一个代码块或者功能的时候,是由很多行代码组成的.
每一行语句都可能因为线程被抢而被打断.
极端的效果可能是各个线程调用同一个方法,但是方法每一行代码都被抢.
这样,你再多的时间也不能完成一个功能.
这样就比单线程还差.
因为单线程起码还能保证功能实现.
为了保障多线程的优势.
也就是要达到在执行功能或者一个代码块的时候,不要被打断,就加入了同步,也就是"锁"的思想
让着整个代码块使用的整个事件单元必须一起执行,不能被打断.
而执行完的那个时间单元,就立刻被等待的线程们抢夺,提高了进程的效率.
---------------------------------------------------------------------
而死锁.
其实不是说这是一种问题.
这只是一种现象.
现象本身没有好坏.
但是不利于我们使用,所以我们划归为程序中不好的,尽量避免或者解决死锁.
死锁的产生:
是因为我们有时候真的要进行代码块的嵌套.
为什么同步嵌套呢?
我接收到的信息是---这是为了给其他的某种方法增加一个使用条件.
也就是说,我这个外部同步代码块没执行完,就不希望内部锁的同对象锁的代码块不执行.
因为毕竟线程之间使用者相同的资源.
不能说我第一次正用着,我的资源就被别的修改了,那就糟糕了.
死锁,现在不要纠结的太深.
知道会死锁就好.
因为EE毕业后,两年甚至很多年内还开发用不到多线程.
多线程一般是项目经理用来思考代码运行效率时使用的.
所以不担心.
作者:
gyy
时间:
2016-10-18 23:43
基本原理?这个可这几句话是讲不清楚的,建议你去看看一些比较好的博客,或者技术书籍吧
作者:
小菜_一碟
时间:
2016-10-22 17:14
如果只是使用的话,了解下基本基本的类使用和多看几个实例吧。如果要深入点的话就看看操作系统和java并发编程实战。
作者:
笑对明天
时间:
2017-2-16 00:24
视频里不是说了么,就像两个人吃饭,我要拿了一直筷子,你拿了一只筷子,我要你的另一只筷子,你要我的另一只筷子,这样就锁死
作者:
lvshen9
时间:
2017-2-18 14:28
线程互不相让的抢资源会出现死锁
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2