알다시피 자바21에 가상 스레드(https://openjdk.org/jeps/444)가 나왔는데 사실상 못쓰고 있었음
원인은 synchronized를 사용하면 스레드가 고정되면서 가상 스레드로써의 이점이 없어지기 때문임
엥? 그럼 synchronized를 안쓰면 되는거 아니야? 할 수 있지만 이미 많은 라이브러리에서 해당 키워드를 쓰는 상황 (대표적으로 mysql connector)
위 jep가 정식 릴리스된다면 진짜 스레드풀 대신 도입해도 될지도??
엥 글 꺠져서 수정함
가상스레드부터 넘 어려워; 쓰레드풀처럼 결국 os메모리 나눠먹기 아닌가 쓰레드풀도 사용량에따라 늘리고 줄어들텐데 뭔차이임 21써본적도 들어본적도없음 - dc App
https://techblog.woowahan.com/15398/
는 읽고올게 - dc App
쉽게 설명하면 webflux가 스레드 컨텍스트 스위칭, 스레드 메모리 점유를 줄이려고 나온건데.. 가상 스레드가 완전히 도입되면 webflux가 필요없어짐. webflux가 성능은 좋은데 코드 짜는 것 부터 비직관적이고 디버깅, 로깅 죄다 어려움
가상 스레드가 갖는 목표는 기존의 코드 수정없이 딸칵 한번으로 전환되는거임
기존 스레드 풀의 문제는 요청 하나가 스레드를 점유한 상태로 외부 io 작업(db나 api호출)을 하면 cpu 라는 값비싼 자원이 낭비되는거고
그렇네 이정도로 파급적이면.. 21로 서비스직들은 다 트라이 해볼것같네... 웹플럭스 갑자기 버려졌노;; - dc App
아니 스레드의 쓰레드화가 이 정도속도의 생성속도,문맥교환이 가능하고 표를봐도 cpu작업의 문맥교환 리스크가 별로없어보이는데 이러면 님이 말한문제들이 보완되면 패러다임이 바뀌는 수준의 개선 아닌가? - dc App
도입이 가능하다면 꽤 유의미한 혁신이긴 하지. 근데 또 다른 부작용이 나올수도 있어서 프로덕션가기 전에 테스트기간이 필요하긴 할듯
mysql connector j에서 synchronized 전부 걷어냈을텐데
https://bugs.mysql.com/bug.php?id=110512
오 9.0 에서 패치가 됐구나