我有ObjectOutputStream
和ObjectInputStream
。我尝试通过它们发送整数和对象。现在我设法通过并读到一点,我不知道为什么它会停在那里。
以下是重点:
阅读器:
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个整数的部分停止阅读?
答案 0 :(得分:0)
我觉得这是一个线程安全问题。作为一般规则,流不是设计为线程安全的。因此,除非您在更高级别同步两个线程,否则一个写入流的线程和另一个调用flush的线程是不安全的。