문제

방금 엉망이되었습니다 Jline 콘솔 모드에서 문자 입력을 구문 분석합니다. 잘 작동하는 것 같지만 궁금합니다.

jline에 문자가 사용 가능한지 알아 내기 위해 차단되지 않은 방법이 있습니까? (즉, 좋아요 kbhit() 창에서.)

자체 스레드에 키보드 입력을 항상 랩핑 할 수 있다고 생각하여 스레드 안전 큐의 키보드 문자를 기본 스레드에 제공하지만 불필요한 것 같습니다.

편집하다: 이것은 문자 별 구문 분석입니다. 나는 GUI를 사용하지 않을 것입니다. 콘솔 모드의 Java의 일반적인 입력 스트림 I/O는 먼저 Enter 키를 누르야합니다 (예 : 버퍼링 된 입력 전용). Java에서는 콘솔 모드의 문자 별 입력을 말하지 마십시오. 그렇지 않습니다. Jline은 플랫폼 의존적 구현과 함께 휴대용 인터페이스를 사용하여 수행합니다.

업데이트 편집: 나는 작업자 스레드에서 차단 I/O를 수행하기 위해 도우미 클래스를 함께 해킹 할 수있었습니다 (차당 I/O에 Jline 사용, 경고 : Ctrl-C 직접 구문 분석해야합니다!) isempty () 루틴과 동기화 된 큐. 내가 지금하고있는 일에 대해서는 괜찮지 만 앞으로이 일을하는 좋은 방법을 알고 싶습니다.

도움이 되었습니까?

해결책

당신은 올바른 길을 가고있는 것 같습니다.

이 작업을 수행하는 "올바른"방법은 모든 차단 I/O를 비 블로킹 대기열에 부어주는 작업자 스레드라고 생각합니다. hava 봐 동시에 린드 큐 ~에서 java.util.concurrent.

다른 팁

기본 라이브러리 없이는 콘솔을 사용하여 비 블로킹 입력을 얻을 수 없습니다.

스윙 앱을 작성하고 작성해야합니다. Keylistener

이 튜토리얼 읽기 :http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top