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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @白纸嘿字@ 中级黑马   /  2015-10-11 20:48  /  3978 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

2黑马币
阻塞是不是sleep?就是所在线程执行到它时,就会sleep!

pic2015_10_11.jpg (49.14 KB, 下载次数: 241)

pic2015_10_11.jpg

12 个回复

倒序浏览
本帖最后由 kangyang 于 2015-10-11 21:20 编辑

是跟sleep差不多,不过理解成wait和notify更好理解。
阻塞就是程序会一直停在read()方法这里,等待数据。没有返回数据就不继续往下执行,至到得到数据。
阻塞时,相当于主线程进入wait状态等待read方法完成,读取完成后相当于再对主线程notify。
回复 使用道具 举报
阻塞不是sleep,sleep只是阻塞的一种,阻塞是指系统不能获得资源,则进程挂起直到满足可操作的条件再进行操作,read()不是阻塞是耗时操作
回复 使用道具 举报
阻塞状态的线程的特征是: 放弃CPU, 暂停运行, 只有等到导致阻塞的原因消除, 才能恢复运行; 或者被其他线程中断, 该线程会退出阻塞状态, 并且抛出 InterruptedException.
阻塞不是sleep(),包括sleep().   read(), wait(),sleep(),这三个都会进入阻塞状态。
回复 使用道具 举报
不是sleep,sleep是休眠,后面可以加时间
回复 使用道具 举报
你好
     线程在运行中也会因为某些原因而阻塞. 所有处于阻塞状态的线程的共同特征是: 放弃CPU, 暂停运行, 只有等到导致阻塞的原因消除, 才能恢复运行; 或者被其他线程中断, 该线程会退出阻塞状态, 并且抛出 InterruptedException.
    以上是我查阅的资料,希望能供参考。
回复 使用道具 举报
kangyang 发表于 2015-10-11 21:19
是跟sleep差不多,不过理解成wait和notify更好理解。
阻塞就是程序会一直停在read()方法这里,等待数据。没 ...

能不能结合这个说一说,“读取单个字符。在字符可用,发生I/O异常,或者已到达流的末尾前,此方法一直阻塞”,这句话是想表达一个什么意思?
回复 使用道具 举报
This method blocks until input data is available, end of file is detected, or an exception is thrown.这是英文原话。
意思就是只要有字符可供读取,或者已到达流的末尾,或者发生I/O异常,read()方法就不会阻塞了。
回复 使用道具 举报
@白纸嘿字@ 发表于 2015-10-13 00:00
能不能结合这个说一说,“读取单个字符。在字符可用,发生I/O异常,或者已到达流的末尾前,此方法一直阻 ...

忘了@你,我找了英文的原文自己翻译了下,你也可以自己看着理解。在楼上~~~~
回复 使用道具 举报
属于阻塞状态的一种,sleep()后只是进入了线程等待池,还要经过锁等待池拿到锁才能再运行。
回复 使用道具 举报
fmi110 高级黑马 2015-10-20 15:02:23
11#
@白纸嘿字@ 发表于 2015-10-13 00:00
能不能结合这个说一说,“读取单个字符。在字符可用,发生I/O异常,或者已到达流的末尾前,此方法一直阻 ...

就是程序会卡在read()这句代码,不在往下运行
除非read()读到数据,或者read读取的文件已经被读取完,或者因为发生其他导致程序异常的情况,程序才能继续向下执行
回复 使用道具 举报
fmi110 发表于 2015-10-20 15:02
就是程序会卡在read()这句代码,不在往下运行
除非read()读到数据,或者read读取的文件已经被读取完, ...

一个阻塞方法在底层是怎么实现的,一个方法加了什么东西,就变成阻塞方法了!
突然,让我联想到另一个,就是“锁”,这“锁”到底是什么?毕向东教学视频上,也没有点破!
回复 使用道具 举报
fmi110 高级黑马 2015-10-20 18:51:08
13#
@白纸嘿字@ 发表于 2015-10-20 15:49
一个阻塞方法在底层是怎么实现的,一个方法加了什么东西,就变成阻塞方法了!
突然,让我联想到另一个, ...

这个应该涉及到java虚拟机的实现机制了  太底层了  没有看过相关是资料
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马