Java 管道 Input/Output 流式传输通信中的大量延迟
Java Piped Input/Output Stream massive delay in communication
我正在制作一个 java 应用程序,它使用管道 input/output 流(在它们周围有一个对象 input/output 流包装器)。发送数据时我遇到了很大的延迟,并认为这是因为我的数据最初的大小。但是,以下演示显示了在不同线程上通信时管道 input/output 流中的本机延迟。
public class Main{
public static long millis = 0;
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
JButton button = new JButton("Press me");
frame.getContentPane().add(button);
frame.setSize(new Dimension(500, 500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream(pis);
button.addActionListener(e -> {
try {
pos.write((int) (Math.random() * 1000));
//records time the packet was sent
millis = System.currentTimeMillis();
} catch (IOException e1) {
e1.printStackTrace();
}
});
while (true) {
System.out
.println("recieved: " + pis.read() + "\n\tin time (ms): " + (System.currentTimeMillis() - millis));
}
}
}
这个延迟对我来说通常是 300-900 毫秒左右。这在我的应用程序中非常大。我想知道为什么延迟这么大?我该如何修复我的代码以减少延迟?
提前致谢。
我正在制作一个 java 应用程序,它使用管道 input/output 流(在它们周围有一个对象 input/output 流包装器)。发送数据时我遇到了很大的延迟,并认为这是因为我的数据最初的大小。但是,以下演示显示了在不同线程上通信时管道 input/output 流中的本机延迟。
public class Main{
public static long millis = 0;
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
JButton button = new JButton("Press me");
frame.getContentPane().add(button);
frame.setSize(new Dimension(500, 500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream(pis);
button.addActionListener(e -> {
try {
pos.write((int) (Math.random() * 1000));
//records time the packet was sent
millis = System.currentTimeMillis();
} catch (IOException e1) {
e1.printStackTrace();
}
});
while (true) {
System.out
.println("recieved: " + pis.read() + "\n\tin time (ms): " + (System.currentTimeMillis() - millis));
}
}
}
这个延迟对我来说通常是 300-900 毫秒左右。这在我的应用程序中非常大。我想知道为什么延迟这么大?我该如何修复我的代码以减少延迟?
提前致谢。