package com.study.io.inputstream_outputstream;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/***
* 多线程读取管道流操作
* @author Administrator
*
*/
public class PipedStreamDemo {
public static void main(String[] args)throws Exception {
PipedInputStream pis=new PipedInputStream();
PipedOutputStream pos=new PipedOutputStream();
pis.connect(pos);//连接管道流
Read read=new Read(pis);
Writer writer=new Writer(pos);
//启动线程
new Thread(writer).start();
new Thread(read).start();
}
}
//写入
class Writer implements Runnable {
private PipedOutputStream pos;
public Writer(PipedOutputStream pos){
this.pos=pos;
}
public void run() {
String data = "你好啊!welcome to china!!!";
try {
System.out.println("写入数据之前必须等待5秒钟......");
Thread.sleep(5000);
pos.write(data.getBytes());
System.out.println("写入数据结束!!!!!!");
pos.close();
} catch (Exception e) {
throw new RuntimeException("WriteThread写入失败...");
}
}
}
//读取
class Read implements Runnable {
private PipedInputStream pis;
public Read(PipedInputStream pis){
this.pis=pis;
}
public void run() {
byte[] data=new byte[1024];
try {
System.out.println("读取数据开始......");
System.out.println(new String(data,0,pis.read(data)));//暂停,阻塞
System.out.println("读取数据结束......");
pis.close();
} catch (IOException e) {
throw new RuntimeException("管道读取流失败!");
}
}
}
分享到:
相关推荐
项目可能使用了`ObjectInputStream`和`ObjectOutputStream`来序列化和反序列化游戏状态,实现对象的网络传输。 3. **异常处理**:在Socket通信中,需要处理各种网络异常,如连接中断、数据传输错误等,确保程序的...
此外,还有缓冲流(BufferedInputStream、BufferedReader等)、转换流(InputStreamReader、OutputStreamWriter)和对象流(ObjectInputStream、ObjectOutputStream),分别用于提高性能、字符编码转换和序列化。...
`ObjectOutputStream`用于写入对象到流中,`ObjectInputStream`则用于从流中读取对象。 七、文件操作练习 在你给出的"demo17"和"task09"这两个文件中,很可能是包含了针对文件读写的实例代码。例如,可能涉及使用`...
3. 对象流:ObjectInputStream和ObjectOutputStream允许我们将Java对象序列化和反序列化,从而实现对象的持久化存储或网络传输。 4. 转换流:InputStreamReader和OutputStreamWriter用于在字节流与字符流之间转换,...
在聊天室中,服务器和客户端之间通常使用`ObjectInputStream`和`ObjectOutputStream`,以便能传输对象,如包含聊天消息的自定义类实例。这些类允许序列化和反序列化对象,使得它们可以在网络间传递。 4. **消息处理...
- 对象流(ObjectInputStream/ObjectOutputStream):用于序列化和反序列化Java对象。 2. 字符流: - 字符输入流(Reader):如FileReader,用于读取字符数据,通常用于处理文本文件。 - 字符输出流(Writer):...
为了保证消息的完整性和顺序,通常会采用字节流或者字符流进行封装,并可能使用ObjectOutputStream和ObjectInputStream来序列化和反序列化对象,以便传输自定义的消息类型。 Swing库是Java AWT(Abstract Window ...
- **输入/输出流**:`InputStream`和`OutputStream`用于读写Socket数据,服务器端通常使用`ObjectInputStream`和`ObjectOutputStream`进行对象的序列化和反序列化,以便发送和接收复杂的数据结构。 3. **Client/...
我们使用了ObjectOutputStream和ObjectInputStream类来实现对象的序列化和反序列化。 知识点10:Java开发实践 在这个实例中,我们使用了Java开发实践来实现财务管理系统。我们遵循了Java开发的最佳实践,使用了...
### Java多线程在Sun认证考试中的应用及实践 #### 一、概述 Sun认证考试是针对Java开发者的一项权威认证,旨在验证考生对于Java技术栈的掌握程度。其中,Java多线程作为并发编程的基础,是Sun认证考试的重要组成...
5. **对象序列化**:通过`Serializable`接口,可以将对象转换为字节流进行存储或网络传输,`ObjectOutputStream`和`ObjectInputStream`负责这一过程。 6. **NIO(非阻塞IO)**:Java 1.4引入了NIO,提供了选择器...
Serializable接口标记一个类可以被序列化,ObjectInputStream和ObjectOutputStream则负责将对象转换为字节流并还原。 在处理大量数据时,流的连接是必不可少的。这就是FilterStream和PushbackInputStream等过滤流的...
Java的ObjectOutputStream和ObjectInputStream可以帮助我们将Java对象转化为字节流进行传输,反之亦然。 4. 异常处理: 在进行Socket编程时,需要处理各种网络异常,如IOException,SocketException等,确保程序在...
Java文件与流操作是Java编程中的重要组成部分,主要用于数据的读写、传输和处理。在Java中,I/O(输入/输出)系统是通过流(Stream)的概念来设计的,流是数据传输的抽象表示,可以是文件、网络连接、内存缓冲区等。...
对象流则用于序列化和反序列化Java对象,如ObjectInputStream和ObjectOutputStream;缓冲流在基本流的基础上提供缓冲功能,提高读写效率。 1. **字节流**:InputStream和OutputStream是所有字节输入流和输出流的...
Java多线程编程概念 - **知识点描述**:多线程编程是指在一个进程中同时运行多个线程的技术。Java语言提供了强大的线程管理功能,使得开发多线程应用程序变得相对简单。 - **详细说明**: - **程序**:计算机...
- ObjectInputStream和ObjectOutputStream实现了Java对象的序列化和反序列化,使得对象可以存储到磁盘或通过网络传输。 六、文件操作与目录操作 - File类提供了文件和目录的基本操作,如创建、删除、重命名等。 - ...
6. 对象流(ObjectInputStream和ObjectOutputStream): 这两种流允许序列化和反序列化Java对象,使得对象能够在不同程序之间传输或持久化存储。 7. 文件流(FileInputStream和FileOutputStream): 文件输入流和...
- ObjectInputStream和ObjectOutputStream允许我们将Java对象序列化和反序列化,从而实现对象的持久化存储或网络传输。 5. 复用流: - PipedInputStream和PipedOutputStream用于线程间通信,一个线程写入数据,另...
对象流包括ObjectInputStream和ObjectOutputStream,用于序列化和反序列化对象。文件流如FileInputStream和FileOutputStream,直接操作磁盘文件。 在Java IO中,还有缓冲流(BufferedInputStream/BufferedReader等...