개발/트러블 슈팅

03/14 간단한 키오스크 만들기

sos000303 2024. 3. 14. 18:00
728x90

1. 문제의 발생

fun main(){
    println(123)
    Thread.sleep(10000)
    while (true){
        println(readln())
    }
}
// 콘솔
123
// sleep
1
2
2
3
123
// sleep 끝
1
2
2
3
123

위와 같이 특정 동작 후 3초의 딜레이를 넣기 위해 Thread.sleep(3000)을 작성했다. 하지만 sleep으로 스레드가 비활성화 된 상태에서 입력한 값들이 readln에서 읽히는 문제가 발생했다.

2. 사실확인 및 원인 분석

여러 방면으로 찾아봤는데 원인은 readln이 Scanner 클래스라 Thread에 종속되지 않아서 발생하는 일이었다.

결국 thread를 sleep 시키더라도 콘솔에 입력됐다는 로그가 남아있어서 readln은 입력된 값을 받아온다.

3. 시도 및 결과

목표로 하는 개발자는 콘솔개발자가 아니라 안드로이드 개발자이기 때문에 콘솔에서만 사용하는 여러 기능들에 대해 너무 깊게 파고들지 않는 것이 좋을 것 같다는 조언을 듣고 고민을 접기로 했다.

 

 

728x90