`

java多线程操作对象流ObjectInputStream和ObjectOutputStream

 
阅读更多

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("管道读取流失败!");   
        }
    }
}

分享到:
评论

相关推荐

    java多线程实现五子棋游戏

    项目可能使用了`ObjectInputStream`和`ObjectOutputStream`来序列化和反序列化游戏状态,实现对象的网络传输。 3. **异常处理**:在Socket通信中,需要处理各种网络异常,如连接中断、数据传输错误等,确保程序的...

    Java基础下资料集合IO流多线程

    此外,还有缓冲流(BufferedInputStream、BufferedReader等)、转换流(InputStreamReader、OutputStreamWriter)和对象流(ObjectInputStream、ObjectOutputStream),分别用于提高性能、字符编码转换和序列化。...

    Java-Io流,练习

    `ObjectOutputStream`用于写入对象到流中,`ObjectInputStream`则用于从流中读取对象。 七、文件操作练习 在你给出的"demo17"和"task09"这两个文件中,很可能是包含了针对文件读写的实例代码。例如,可能涉及使用`...

    Java输入输出流以及线程讲解

    3. 对象流:ObjectInputStream和ObjectOutputStream允许我们将Java对象序列化和反序列化,从而实现对象的持久化存储或网络传输。 4. 转换流:InputStreamReader和OutputStreamWriter用于在字节流与字符流之间转换,...

    java多线程聊天室附源码

    在聊天室中,服务器和客户端之间通常使用`ObjectInputStream`和`ObjectOutputStream`,以便能传输对象,如包含聊天消息的自定义类实例。这些类允许序列化和反序列化对象,使得它们可以在网络间传递。 4. **消息处理...

    IO流 javaio java 流

    - 对象流(ObjectInputStream/ObjectOutputStream):用于序列化和反序列化Java对象。 2. 字符流: - 字符输入流(Reader):如FileReader,用于读取字符数据,通常用于处理文本文件。 - 字符输出流(Writer):...

    java多线程+Socket+Swing局域网聊天软件(客户端源码)

    为了保证消息的完整性和顺序,通常会采用字节流或者字符流进行封装,并可能使用ObjectOutputStream和ObjectInputStream来序列化和反序列化对象,以便传输自定义的消息类型。 Swing库是Java AWT(Abstract Window ...

    java多线程Client/Server程序

    - **输入/输出流**:`InputStream`和`OutputStream`用于读写Socket数据,服务器端通常使用`ObjectInputStream`和`ObjectOutputStream`进行对象的序列化和反序列化,以便发送和接收复杂的数据结构。 3. **Client/...

    java多线程结合界面开发实例(原创)财务管理系统源代码和效果图[参考].pdf

    我们使用了ObjectOutputStream和ObjectInputStream类来实现对象的序列化和反序列化。 知识点10:Java开发实践 在这个实例中,我们使用了Java开发实践来实现财务管理系统。我们遵循了Java开发的最佳实践,使用了...

    sun认证考试辅导:java多线程的部分操作.docx

    ### Java多线程在Sun认证考试中的应用及实践 #### 一、概述 Sun认证考试是针对Java开发者的一项权威认证,旨在验证考生对于Java技术栈的掌握程度。其中,Java多线程作为并发编程的基础,是Sun认证考试的重要组成...

    java线程+java IO操作

    5. **对象序列化**:通过`Serializable`接口,可以将对象转换为字节流进行存储或网络传输,`ObjectOutputStream`和`ObjectInputStream`负责这一过程。 6. **NIO(非阻塞IO)**:Java 1.4引入了NIO,提供了选择器...

    Javaio流思维导图

    Serializable接口标记一个类可以被序列化,ObjectInputStream和ObjectOutputStream则负责将对象转换为字节流并还原。 在处理大量数据时,流的连接是必不可少的。这就是FilterStream和PushbackInputStream等过滤流的...

    java多线程

    Java的ObjectOutputStream和ObjectInputStream可以帮助我们将Java对象转化为字节流进行传输,反之亦然。 4. 异常处理: 在进行Socket编程时,需要处理各种网络异常,如IOException,SocketException等,确保程序在...

    java文件与流操作code

    Java文件与流操作是Java编程中的重要组成部分,主要用于数据的读写、传输和处理。在Java中,I/O(输入/输出)系统是通过流(Stream)的概念来设计的,流是数据传输的抽象表示,可以是文件、网络连接、内存缓冲区等。...

    java io流的实践案例大全

    对象流则用于序列化和反序列化Java对象,如ObjectInputStream和ObjectOutputStream;缓冲流在基本流的基础上提供缓冲功能,提高读写效率。 1. **字节流**:InputStream和OutputStream是所有字节输入流和输出流的...

    java_经典多线程编程

    Java多线程编程概念 - **知识点描述**:多线程编程是指在一个进程中同时运行多个线程的技术。Java语言提供了强大的线程管理功能,使得开发多线程应用程序变得相对简单。 - **详细说明**: - **程序**:计算机...

    《JAVA_IO流学习总结》

    - ObjectInputStream和ObjectOutputStream实现了Java对象的序列化和反序列化,使得对象可以存储到磁盘或通过网络传输。 六、文件操作与目录操作 - File类提供了文件和目录的基本操作,如创建、删除、重命名等。 - ...

    JavaIO流详细总结

    6. 对象流(ObjectInputStream和ObjectOutputStream): 这两种流允许序列化和反序列化Java对象,使得对象能够在不同程序之间传输或持久化存储。 7. 文件流(FileInputStream和FileOutputStream): 文件输入流和...

    java之io流实例

    - ObjectInputStream和ObjectOutputStream允许我们将Java对象序列化和反序列化,从而实现对象的持久化存储或网络传输。 5. 复用流: - PipedInputStream和PipedOutputStream用于线程间通信,一个线程写入数据,另...

    完整版Java全套入门培训课件 Java基础 07-IO(共29页).rar

    对象流包括ObjectInputStream和ObjectOutputStream,用于序列化和反序列化对象。文件流如FileInputStream和FileOutputStream,直接操作磁盘文件。 在Java IO中,还有缓冲流(BufferedInputStream/BufferedReader等...

Global site tag (gtag.js) - Google Analytics