virtual thread

Language/Kotlin

Coroutine과 Java Virtual Thread 비교

코루틴이란Co(협력) + Routine(작업)의 합성어로, 이름 그대로 여러 작업이 협력하여 동시에 진행하는 비동기 처리 프로그래밍 패턴이다. 중단과 재개fun main() { println("START") newRoutine() println("END")}fun newRoutine() { val num1 = 1 val num2 = 2 println("${num1 + num2}")}===========================START3END 다음과 같이 2개의 루틴(함수)가 있으며, 굉장히 직관적이고 결과도 예상이 간다. fun main(): Unit = runBlocking { //0. main 코루틴 실행, START 출력 println("START"..

Language/Java

[Java] Virtual Thread 부셔보기

개요 - 기존 스레드의 한계Java의 전통적인 동시성 모델은 Thread per Request 모델로 요청에 대해 하나의 스레드를 할당한다. 해당 요청 처리가 끝날 때 까지 스레드가 점유된다. 문제는 JVM의 스레드(Platform Thread)는 OS 스레드와 1:1로 매핑되며, 스레드 당 메모리를 1~2MB 점유하므로 비용이 비싸다.서버의 자원은 한정되어 있기에 요청이 늘어난다고 해도, 수천 개 이상의 스레드를 생성하기에는 한계가 있다.또한 JVM의 스레드는 I/O 블로킹이 발생하면, 작업이 완료될 때까지 다른 요청을 처리할 수 없다. 동시 요청이 스레드 풀 크기를 초과하게 되면 나머지 요청은 대기할 수 밖에 없고 병목이 될 수 있다. Virtual Thread는 이러한 한계를 극복하고 처리량을 늘릴..

kkang._.h00n
'virtual thread' 태그의 글 목록