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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明锦添 中级黑马   /  2013-4-11 10:18  /  1058 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 明锦添 于 2013-4-13 09:48 编辑

在管道流多线程中,是输入流线程执行一次,管道中有了内容,就执行等待中的输出流线程一次,还是说管道中有了内容,这两个线程还要抢夺执行权呢?如果我的输入流线程中执行的是循环输入语句,会不会出现我往管道中覆盖输入了多次内容后才执行一次输出流线程呢?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
多个线程在内存中的执行时间是由CPU随机分配的,有的线程可能执行的时间会多点,有的会少点;但是,CPU在一个时间点只能执行一个线程!!!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。不建议对这两个对象尝试使用单个线程,因为这样可能会造成该线程死锁。如果某个线程正从连接的管道输入流中读取数据字节,但该线程不再处于活动状态,则该管道被视为处于 毁坏 状态。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
管道流的读写方法都是阻塞式的,所以:
如果写入线程完成了写入操作,当读取流读取数据之前此线程会阻塞,所以此时只有读取流能够获得资源执行
读取流同上
所以他们会很协调的运行
对于单线程的情况参照楼上的吧

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
技术分果然不是白混的,楼上的才是我要的答案,不知道我要问什么的就不要乱说,会害死人的
回复 使用道具 举报
明锦添 发表于 2013-4-11 20:40
技术分果然不是白混的,楼上的才是我要的答案,不知道我要问什么的就不要乱说,会害死人的 ...

送分的机会不多哦,如果你觉得谁回答的好,你也可以给相应的奖励金币哦,呵呵
回复 使用道具 举报
黄玉昆 黑马帝 2013-4-13 08:52:17
7#
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马