使用ObjectInputStream和ObjectOutputStream注意问题
1、对象序列化,类实现Serializable接口
不需要序列化的属性,使用transient声明
2、使用套接字流在主机之间传递对象注意问题:
学习自:Socket同时使用ObjectInputStream和ObjectOutputStream传输序列化对象时的顺序
ObjectInputStream与ObjectOutputStream的顺序问题
在网络通讯中,主机与客户端若使用ObjectInputStream与ObjectOutputStream建立对象通讯,必须注重声明此两个对象的顺序。
如:
主机端先建立ObjectInputStream后建立ObjectOutputStream,则对应地客户端要先建立ObjectOutputStream后建立ObjectInputStream,否则会造成两方互相等待数据而导致死锁。
原因是建立ObjectInputStream对象是需要先接收一定的header数据,接收到这些数据之前会处于阻塞状态。
public ObjectInputStream(InputStream in) throws IOException的官方API显示:Creates an ObjectInputStream that reads from the specified InputStream. A serialization stream header is read from the stream and verified. This constructor will block until the corresponding ObjectOutputStream has written and flushed the header.
在创建ObjectInputStream对象时会检查ObjectOutputStream所传过来了头信息,如果没有信息将一直会阻塞
使用ObjectInputStream和ObjectOutputStream注意问题的更多相关文章
- serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法
ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...
- Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)
ObjectInputStream和ObjectOutputStream的作用是对基本数据和对象进行序列化操作支持.创建文件输出流对应的ObjectOutputStream对象,该ObjectOutp ...
- [九]JavaIO之ObjectInputStream 和 ObjectOutputStream
序列化 序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程 序列化是一种轻量级的持久化,对象都是存活在内存中的,当JVM运行结束,对象便不存在 ...
- java io系列05之 ObjectInputStream 和 ObjectOutputStream
本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputS ...
- Java之IO(七)ObjectInputStream和ObjectOutputStream
转载请注明源出处:http://www.cnblogs.com/lighten/p/7003536.html 1.前言 本章介绍Java字节流中重要的成员,对象流ObjectInputStream和O ...
- ObjectInputStream与ObjectOutputStream类实现对象的存取
1. ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 ...
- IO操作之ObjectInputStream与ObjectOutputStream
之前写过DataInputStream和DataOutputStream,使用这两个类可以对java基本数据类型进行序列化和反序列化. 本篇再来两个新东西:ObjectInputStream,Obje ...
- Java IO: 序列化与ObjectInputStream、ObjectOutputStream
作者:Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和O ...
- Java IO(六) ObjectInputStream 和 ObjectOutputStream
Java IO(六) ObjectInputStream 和 ObjectOutputStream 一.介绍 对于对象数据的处理,Java IO 提供了 ObjectInputStream 和 Obj ...
随机推荐
- 实现透明渐变的Activity
如果光是透明全屏的Activity的话,直接继承内置theme即可 <activity android:theme="@android:style/Theme.NoTitleBar.F ...
- Design Thinking BrainWalk
Design Thinking Design Thinking Workshop @ Agile Tour 2013 Shanghai 摘要: 设计思维工作坊上周日在2013年敏捷之旅上海站,引导 ...
- .NET面向对象特性之多态
.NET面向对象特性之多态 前言 上一篇总结了面向对象三大特性之一的继承,再接再厉,这一章继续总结多态.同时把继承中涉及到多态的内容进一步补充扩展.可以说“继承”是多态的根基.但继承主要关注的是“共通 ...
- 代码重构方向原则指导(转载 cnblogs)
英文原文:Hill Climbing (Wonkish) 重构是一种对软件进行修改的行为,但它并不改变软件的功能特征,而是通过让软件程序更清晰,更简洁和更条理来改进软件的质量.代码重构之于软件,相 ...
- asp.net MVC实现文章的“上一篇下一篇”
由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...
- 前端MVVM框架avalon - 模型转换1
轻量级前端MVVM框架avalon - 模型转换(一) 接上一章 ViewModel modelFactory工厂是如何加工用户定义的VM? 附源码 洋洋洒洒100多行内部是魔幻般的实现 1: fun ...
- hdu 4198 Quick out of the Harbour(BFS+优先队列)
题目链接:hdu4198 题目大意:求起点S到出口的最短花费,其中#为障碍物,无法通过,‘.’的花费为1 ,@的花费为d+1. 需注意起点S可能就是出口,因为没考虑到这个,导致WA很多次....... ...
- launch failed.Binary not found
1.在eclipse官网中下载已经集成了CDT的eclipse.(http://www.eclipse.org/downloads/download.php?file=/technology/epp/ ...
- poj-3898 Software Industry Revolution DP
题目链接: http://poj.org/problem?id=3898 题目意思: 有两个字符串,模式串和原串.每个字母有一个权值,a为1,b为2,...z为26 模式串中‘ ?’可以被一个字母代替 ...
- Android实现通过手机找回密码
其实这篇文章有点标题党,代码没有几行,真不好意思,但是确实给出了解决方案,这个我觉得还是很重要的,代码写了几年之后其实比较注重的就是思路跟方法了. 背景:手机客户端有这么一个需求,用户忘记密码了,然后 ...