任务间使用管道进行输入输出
来源:互联网 发布:js初学者 编辑:程序博客网 时间:2024/06/14 03:00
内容:通过输入/输出在线程间进行通信通常很有用。利用PipedWriter类(允许任务向管道写)和PipedReader类(允许不同任务从同一个管道中读取)。下面代码中Sender和Receiver代表了需要相互通信的两个任务。Sender把数据放进Writer,然后休眠一段时间。然而,Receiver没有sleep()和wait()。但当他调用read()时,如果没有更多的数据,管道将阻塞,而普通I/O是不能打断的。
class Sender implements Runnable {private Random rand = new Random(47);private PipedWriter out = new PipedWriter();public PipedWriter getPipedWriter() {return out;}@Overridepublic void run() {try {while (true) {for (char c = 'A'; c <= 'z'; c++) {out.write(c);TimeUnit.MILLISECONDS.sleep(rand.nextInt(500));}}} catch (IOException e) {System.out.println(e + " Sender write exception");} catch (InterruptedException e) {System.out.println(e + "Sender sleeo interrupted");}}}class Receiver implements Runnable {private PipedReader in;public Receiver(Sender sender) throws IOException {in = new PipedReader(sender.getPipedWriter());}@Overridepublic void run() {try {while (true) {System.out.println("Read: " + (char)in.read() + ". ");}} catch (IOException e) {System.out.println(e + " Receiver read exception");}}}public class PipedIO {public static void main(String[] args) throws Exception {Sender sender = new Sender();Receiver receiver = new Receiver(sender);ExecutorService exec = Executors.newCachedThreadPool();exec.execute(sender);exec.execute(receiver);TimeUnit.SECONDS.sleep(4);exec.shutdownNow();}}
0 0
- 任务间使用管道进行输入输出
- 任务间使用管道进行输入/输出
- Java 多线程 任务间使用管道进行输入/输出
- 线程间使用管道进行输入、输出
- 线程间使用管道进行输入/输出
- java 线程 生产者-消费者与队列,任务间使用管道进行输入、输出 讲解示例 --thinking java4
- 进程间使用管道通信
- 16.1 进程间使用管道通信
- 解决activity、service间使用sharePreference进行值存取不同步
- C++学习:通过管道进行cmd进程输入输出重定向
- 组件间使用插槽
- FreeRTOS学习笔记——任务间使用队列同步数据
- 主机和目标机间使用NFS进行文件传输(Memo)
- boost线程库学习--(4)两个线程间使用队列进行通信
- (高效开发)Android手机间使用socket进行文件互传实例
- 用文本文档进行输入输出
- 过滤器 输入输出 管道
- 标准输入输出及管道
- 欢迎使用CSDN-markdown编辑器
- utilize matlab to implement the image processing (1)
- Eclipse安装Freemarker插件[转]
- vs2013+openCV+win8.1 配置
- JDBC对事务的支持
- 任务间使用管道进行输入输出
- 电信141p122第17题
- P122.21
- P122,14
- 04-树3. Root of AVL Tree
- linux进程通信(socket与sendmsg)
- 浅谈 Android Service
- Poj 2239 Selecting Courses 【二分匹配】
- BI商业智能培训系列——(三)SSAS入门