gpt4 book ai didi

java - 当 PipedReader 与 PipedWriter 位于不同线程时,如何将它们连接起来?

转载 作者:行者123 更新时间:2023-11-30 04:57:27 25 4
gpt4 key购买 nike

正如标题所说,模拟代码来演示我的问题

驱动程序类别

  import java.io.*;

public class driver
{

public static void main(String[] args)
{
PipedWriter writer1 = new PipedWriter();
PipedWriter writer2 = new PipedWriter();
PipedReader reader1 = new PipedReader();
PipedReader reader2 = new PipedReader();

Thread thread1 = new MyThread(writer1, reader1);
Thread thread2 = new MyThread(writer2, reader2);
try
{
writer2.connect(reader1);
} catch(Exception e)
{
e.printStackTrace();
}
}
}

MyThread 类

 import java.io.*;
public class MyThread extends Thread
{
PipedReader input = new PipedReader();
PipedWriter output = new PipedWriter();

public MyThread(PipedWriter input, PipedReader output)
{
try
{
this.input.connect(input);
this.output.connect(output);
} catch(Exception e)
{
e.printStackTrace();
}
}
public void run()
{
try
{
input.close();
output.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}

我不确定 .connect 方法是否是我应该使用的方法。我想要做的是将来自第一个线程的输出流直接写入第二个线程的输入流。

上面的代码可以正常编译,但否则表示它已经连接。

java.io.IOException: Already connected
at java.io.PipedWriter.connect(Unknown Source)
at driver.main(driver.java:17)

最佳答案

如果写入器连接到读取器,则读取器也连接到写入器。您不需要将它们连接两次。如果一个线程写入,另一个线程读取,则只需要一名写入者和一名读取者。

在主线程中创建这两个线程,连接它们,然后创建一个带有读取器的线程和一个带有写入器的线程,然后启动这两个线程。

关于java - 当 PipedReader 与 PipedWriter 位于不同线程时,如何将它们连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8084312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com