java 输入流FileInputStream中的read()方法,API的解释如下:

publicintread()throwsIOException从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。阻塞是什么意思,我在使用过程中怎么没有感觉... public int read() throws IOException从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。

阻塞是什么意思,我在使用过程中怎么没有感觉到有"阻塞"发生呢?和SCOKET中的accept()的阻塞意思一样吗?
展开
 我来答
百度网友fd5bd8e5
2011-10-27 · 超过30用户采纳过TA的回答
知道答主
回答量:144
采纳率:0%
帮助的人:78.5万
展开全部
阻塞是JAVA多线程编程的一个状态,当FileInputStream在执行read()方法的时候,CPU就留出时间块来执行这个方法,这时间里别的方法就只能等待,当read方法阻塞的时候,就会有另一个方法开始执行。
至于你感觉不到,那是多线程的表现形式,就是为了让你感觉不到。当有多个方法需要执行的时候,单线程机会依次执行,多线程机则会将CPU分成多个时间片,在不同的时间片里执行不同的方法,给人的感觉就是多个方法同时在执行。
追问
是不是可以这样理解,当FileInputStream在执行read()方法的时候,其他线程是插不进去的直到read()方法执行完毕。
追答
其实不一定会一次性执行完毕,可能会分多次,但read方法在执行的时候,其他线程就只能是等待,在只有一个CPU的情况下同一时间段只能有一个线程是执行状态,但可以有多个线程是可执行状态,其实就是在等待。
mikemelon
2011-10-27 · TA获得超过4594个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1574万
展开全部
阻塞就是一直等待的意思,你的理解是对的,和SCOKET中的accept()的阻塞意思一样,没有阻塞是因为有字节可读,如果你的系统文件操作很频繁,这个是会一直等待,直到读出字节以后返回的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式