1
パイプ入出力ストリームを使用するJavaアプリケーションを作成しています(その周囲にオブジェクト入出力ストリームラッパーがあります)。私はデータを送信するときにかなりの遅延を得ていました、そして、それは私のデータのサイズが最初であったためだと思いました。ただし、次のデモンストレーションでは、異なるスレッドで通信するときのパイプ入出力ストリームのネイティブ遅延を示しています。Java Piped入出力ストリーム通信の大規模な遅延
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ミリ秒です。これは私のアプリケーションではかなり大きいです。なぜ私はこの大きな遅れがあるのだろうと思っていますか?遅延を減らすためにコードを修正するにはどうすればよいですか?
ありがとうございます。
を参照してください? –
ああ、それは私の部分で愚かな間違いです、そのhahahaのおかげで。 –
これは今動作します、ありがとうございます。 –