자바 Thread_14
논-블로킹
자바 스레드12 ~ 13의 내용와 이어지는 내용으로 꼭 두 개의 글을 같이 봐야함
- 논블로킹을 호출하면 해당 메서드는 차단되지않음
- 바로 반환하기때문에 스레드가 다음 작업을 할 수 있음 (결과를 인자로 받는 콜백 함수)
- 요청을 처리하는 스레드가 차단되지않았기에 코어보다 많은 스레드를 생성할 필요가 없음
- CPU를 쉴틈없이 사용중이니 컨텍스트 스위치도 없음
- 그러면 스레드를 더 생성할 이유는 코어가 더 많아서 병렬처리할떄임
- 논블로킹IO 사용시 코어수 == 스레드수 모델 가능함(CPU 연산을 수행하는 프로세스에 최적의 성능을 뽑아낼 수 있음)
- 단점은 코드 가독성이 블로킹IO에 비해 너무 안좋고 적용하는 코드의 레벨이 너무 높음 (매우 어려움)
- 대부분 라이브러리 or 프레임워크를 사용함 (netty, webflux 등등) 복잡도, 의존도 증가!
블로킹IO, 논블로킹IO의 장점을 다 가진 스레드 모델이 있음 => 다음 글에
출처 - https://kmooc.udemy.com/course/java-multi-threading/ (Java 멀티스레딩, 병행성 및 성능 최적화 - 전문가 되기 )
This post is licensed under CC BY 4.0 by the author.