Je crée une application Java qui utilise des flux d'entrée/sortie canalisés (avec une enveloppe de flux d'entrée/sortie d'objet autour d'eux). Je recevais un assez gros retard lors de l'envoi de données et je pensais que c'était à cause de la taille de mes données initialement. Cependant, la démonstration suivante montre le retard natif dans les flux d'entrée/sortie canalisés lors de la communication sur différents threads.Java Piped Input/Output Diffusion massive de retard dans la communication
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));
}
}
}
Ce délai est généralement autour de 300-900 ms pour moi. C'est assez gros dans mon application. Je me demande pourquoi est-ce un gros retard? Et comment puis-je réparer mon code pour réduire le délai?
Merci d'avance.
que diriez-vous chasse? –
oh wow c'est une erreur stupide de ma part, merci pour ce hahaha. –
Cela fonctionne maintenant, merci. –