ObjectInputStream无法读取

时间:2012-05-25 22:52:46

标签: java packet objectoutputstream

我有ObjectOutputStreamObjectInputStream。我尝试通过它们发送整数和对象。现在我设法通过并读到一点,我不知道为什么它会停在那里。

以下是重点:

阅读器:

    while (true) {
        start = in.readInt();
        System.out.println("PART 1");
        int temp1 = in.readInt();
        int temp2 = in.readInt();
        int temp3 = in.readInt();
        System.out.println("PART12");
        Chunk temp = new Chunk(temp1,temp2, temp3);
        while (true) {

它没有到达part12(没有传递第一个int ...)

编剧:

 if (chunkList != null) {
        for (Chunk c: chunkList) {
            out.writeInt(-1);
            out.writeInt(c.getLocation().getX());
            out.writeInt(c.getLocation().getY());
            out.writeInt(c.getLocation().getZ());
            if (c.getTileList() != null) {

它成功地传递了所有这些。

我每隔2ms就会出来。在一个单独的线程中冲洗。

主题:

 while (true)
        {
            while (c.sendPacket()) {

            try
            {
                if (c.getOut() != null)
                {
                    c.getOut().flush();
                }
            }
            catch (IOException ioexception)
            {
                ioexception.printStackTrace();
            }

            try
            {
                sleep(2L);
            }
            catch (InterruptedException interruptedexception) { }
            }
        }

为什么它会在3个整数的部分停止阅读?

1 个答案:

答案 0 :(得分:0)

我觉得这是一个线程安全问题。作为一般规则,流不是设计为线程安全的。因此,除非您在更高级别同步两个线程,否则一个写入流的线程和另一个调用flush的线程是不安全的。