A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wjhsyy 中级黑马   /  2016-10-17 22:29  /  3511 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币

最佳答案

查看完整内容

本来还想多说点.看了前面两个回答,我觉得我还太基础,就不闹腾了.分享下我的理解,大家交流下. 是这样的,首先,你要有一个概念,就是计算机在执行每一行代码的时候,都是需要消耗时间的,也就是物理时间,你简单可以理解为"执行一行代码就需要一个最小时间单元" 那在多个线程开启后,每个线程都希望抢到执行权,也都会去抢执行权. 但是对于单核来说,只能一次执行一个 也就是说一个最小的时间单元只能执行一个. 这样的话,在我们实现一个代 ...

5 个回复

倒序浏览
本来还想多说点.看了前面两个回答,我觉得我还太基础,就不闹腾了.分享下我的理解,大家交流下.

是这样的,首先,你要有一个概念,就是计算机在执行每一行代码的时候,都是需要消耗时间的,也就是物理时间,你简单可以理解为"执行一行代码就需要一个最小时间单元"

那在多个线程开启后,每个线程都希望抢到执行权,也都会去抢执行权.
但是对于单核来说,只能一次执行一个
也就是说一个最小的时间单元只能执行一个.

这样的话,在我们实现一个代码块或者功能的时候,是由很多行代码组成的.
每一行语句都可能因为线程被抢而被打断.

极端的效果可能是各个线程调用同一个方法,但是方法每一行代码都被抢.
这样,你再多的时间也不能完成一个功能.

这样就比单线程还差.

因为单线程起码还能保证功能实现.

为了保障多线程的优势.

也就是要达到在执行功能或者一个代码块的时候,不要被打断,就加入了同步,也就是"锁"的思想

让着整个代码块使用的整个事件单元必须一起执行,不能被打断.

而执行完的那个时间单元,就立刻被等待的线程们抢夺,提高了进程的效率.

---------------------------------------------------------------------
而死锁.
其实不是说这是一种问题.
这只是一种现象.

现象本身没有好坏.

但是不利于我们使用,所以我们划归为程序中不好的,尽量避免或者解决死锁.

死锁的产生:
是因为我们有时候真的要进行代码块的嵌套.

为什么同步嵌套呢?
我接收到的信息是---这是为了给其他的某种方法增加一个使用条件.
也就是说,我这个外部同步代码块没执行完,就不希望内部锁的同对象锁的代码块不执行.

因为毕竟线程之间使用者相同的资源.

不能说我第一次正用着,我的资源就被别的修改了,那就糟糕了.

死锁,现在不要纠结的太深.

知道会死锁就好.

因为EE毕业后,两年甚至很多年内还开发用不到多线程.

多线程一般是项目经理用来思考代码运行效率时使用的.

所以不担心.
回复 使用道具 举报
gyy 中级黑马 2016-10-18 23:43:52
藤椅
基本原理?这个可这几句话是讲不清楚的,建议你去看看一些比较好的博客,或者技术书籍吧
回复 使用道具 举报
如果只是使用的话,了解下基本基本的类使用和多看几个实例吧。如果要深入点的话就看看操作系统和java并发编程实战。
回复 使用道具 举报
笑对明天 来自手机 中级黑马 2017-2-16 00:24:33
报纸
视频里不是说了么,就像两个人吃饭,我要拿了一直筷子,你拿了一只筷子,我要你的另一只筷子,你要我的另一只筷子,这样就锁死
回复 使用道具 举报
线程互不相让的抢资源会出现死锁
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马