`
javaeyes
  • 浏览: 29716 次
  • 来自: ...
社区版块
存档分类
最新评论

一个比较偏的问题,java序列化

阅读更多
做rome 解析RSS的时候发现一个奇怪的现象,先看代码
		PipedInputStream pipin = new PipedInputStream();
		PipedOutputStream pipout = new PipedOutputStream(pipin);
		ObjectOutputStream out = new ObjectOutputStream(pipout);
		SyndEntry entry = new SyndEntryImpl();
		System.out.println(ss);
 		out.writeObject(entry);
		out.close();

我原想把SyndEntryImpl的实例进行对象序列化存到文件中,但是程序运行到out.writeObject(entry);这一句的时候就停住了,没有任何错误,cpu也正常,SyndEntryImpl这个类已经声名实现了Serializable。这难道是java的bug?
分享到:
评论
8 楼 xin_wang 2007-05-23  
javaeyes 写道
做rome 解析RSS的时候发现一个奇怪的现象,先看代码
		PipedInputStream pipin = new PipedInputStream();
		PipedOutputStream pipout = new PipedOutputStream(pipin);
		ObjectOutputStream out = new ObjectOutputStream(pipout);
		SyndEntry entry = new SyndEntryImpl();
		System.out.println(ss);
 		out.writeObject(entry);
		out.close();

我原想把SyndEntryImpl的实例进行对象序列化存到文件中,但是程序运行到out.writeObject(entry);这一句的时候就停住了,没有任何错误,cpu也正常,SyndEntryImpl这个类已经声名实现了Serializable。这难道是java的bug?

你这段代码有问题:pipin这个stream需要运行在另外一个线程,来读取写入管道的数据, 下面这段可以运行的。

final PipedInputStream pipin = new PipedInputStream();
        final PipedOutputStream pipout = new PipedOutputStream(pipin);
        new Thread(new Runnable() {
            public void run() {
                int c = -1;
                try {
                    while ((c = pipin.read()) >= 0) {
                        System.out.print(c);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

        ObjectOutputStream out = new ObjectOutputStream(pipout);
        SyndEntry entry = new SyndEntryImpl();
        System.out.println("ss");
        out.writeObject(entry);
        out.flush();
        out.close();
7 楼 javaeyes 2007-05-22  
这个问题一定要顶上去
6 楼 javaeyes 2007-05-22  
这个问题没有人知道吗?
5 楼 javaeyes 2007-05-21  
不是pipe的问题,因为其它的对象是可以的,我上传个rome,大家也试试
4 楼 javaeyes 2007-05-21  
楼上说的这个该怎么generated?那个类是Rome自带的实现类,也跟平时我们写Serializable的类一样并没有指定serialID,但是自己写的类都是能够writerObject的呀,怪就怪在这里了
3 楼 jasongreen 2007-05-21  
假如像你说的一样,运行到这一步就停住了,没有任何错误,那说明,程序正在等待,你用了pipe,我认为是你的io操作写的有问题,你可以试试先写到文件里

FileOutputStream fileOut = ...;
ObjectOutputStream out = new ObjectOutputStream(fileOut);  
2 楼 galaxystar 2007-05-21  
序列户serialID有没有generated?
1 楼 javaeyes 2007-05-21  
大家都来看看 我觉得这个问题比较偏,大家讨论下呀

相关推荐

Global site tag (gtag.js) - Google Analytics