Hello, Freakin world!

[채팅앱] 또 한번의 코드 뒤엎기 본문

Toy Project/채팅 앱 만들기

[채팅앱] 또 한번의 코드 뒤엎기

johnna_endure 2020. 3. 16. 10:05

아마 내가 자바 nio에서 제공하는 selector를 이용한 논블로킹 방식에 꽂혀있었는지도 모르겠다.

 

이 방식으로 모든 네트워크 통신을 처리하려고 했으나 한계가 있다는걸 깨달았다.

이전에 ConnectionLoop를 구현할 때 깨달았던 부분과도 관련이 있다.

 

지금이 selector를 이용한 논블로킹 방식(이벤트 방식)은 데이터를 보내고 그에 대한 응답을 받아야하는 식의

대화형 애플리케이션은 만들 수가 없다. 그 이유는 이벤트를 보내고나서 그 특정 응답을 선별할 수 없기 때문이다.

 

이를 구현하려면 동기방식을 쓸 수 밖에 없다. (기존의 웹처럼)

동기방식을 쓰더라도 그 작업을 다른 스레드에 위임하면 논블로킹을 구현할 수 있는데,

아마도 Future와 CompletableFuture를 사용하면 될 듯하다.

 

자바 동시성 api들에 대해 좀 학습하고,

다음 글에서 아키텍처 수정안을 생각해보자

 

Comments