Sono 3 giorni che mi arrovello su questo problema. Ho interpellato Bard e ChatGPT fino allo sfinimento, e ho provato ogni situazione che mi veniva in mente.
Questi sono i codici
Il primo snippet viene eseguito sul thread principale. È stato progettato per non ricevere input spesso, quindi si troverà frequentemente ad aspettare bloccato su
Il secondo snippet viene eseguito su un altro thread e, come si può intuire, si occupa di stampare dei log. Vengono stampati sulla stessa console del prompt dell'altro codice, e decisamente più spesso.
Il problema è il seguente: se il programma è così
.
Qualcuno sa come fare in modo di stampare
Questi sono i codici
Java:
public void run() {
while(true) {
System.out.print(">>> ");
System.out.flush();
scanner = new Scanner(System.in);
String command = scanner.nextLine();
parseCommand(command, server);
}
}
Java:
public void clientLoggedIn(String username, String ip) {
String time = LocalTime.now().toString();
System.out.println("\n[LOG] " + time + " - " + username + " logged in from " + ip);
}
Il primo snippet viene eseguito sul thread principale. È stato progettato per non ricevere input spesso, quindi si troverà frequentemente ad aspettare bloccato su
scanner.nextLine()
.Il secondo snippet viene eseguito su un altro thread e, come si può intuire, si occupa di stampare dei log. Vengono stampati sulla stessa console del prompt dell'altro codice, e decisamente più spesso.
Il problema è il seguente: se il programma è così
>>>
che aspetta un input, e l'altro metodo nell'altro thread vengono stampati dei log, mi ritroverei così:
Codice:
>>>
(log stampato)
(punto in cui effettivamente il prompt si aspetta un input)
Qualcuno sa come fare in modo di stampare
>>>
ogni nuova riga vuota? Così avrei il prompt che viene stampato di nuovo subito dopo un log