Análise de entrada do teclado Java em um aplicativo de console
Eu apenas comecei a brincar comJLine para analisar a entrada de caracteres no modo do console. Parece funcionar bem, mas estou me perguntando:
Existe uma maneira sem bloqueio no JLine para descobrir se os caracteres estão disponíveis? (ou seja, comokbhit()
no Windows.)
Suponho que eu sempre poderia agrupar a entrada do teclado em seu próprio encadeamento, que oferece os caracteres do teclado em uma fila segura para o encadeamento principal, mas isso parece ser desnecessário.
EDITAR: É uma análise caractere por caractere. Eu não vou usar uma GUI. A E / S InputStream usual em Java no modo de console exige que você pressione a tecla Enter primeiro (por exemplo, é apenas a entrada em buffer). Por favor, não me diga que a entrada caractere por caractere no modo console é impossível em Java; não é. O JLine faz isso usando uma interface portátil com uma implementação dependente da plataforma.
Editar atualização: Eu consegui hackear uma classe auxiliar para executar a E / S de bloqueio em um encadeamento de trabalho (usando JLine para a E / S por caractere, aviso: você deve analisar Ctrl-C você mesmo!) E depois se comunicar via fila sincronizada com uma rotina isempty (). Pelo que estou fazendo agora, tudo bem, mas eu realmente gostaria de saber uma boa maneira de fazer isso no futuro.