request on thread#44 2. Start simulation on thread#44 3. End simulation on thread#44 4. Return response on thread#44 @GetMapping("/io-heavy") fun ioHeavy(): String { val result = classicService.ioHeavyTask() return result } fun ioHeavyTask(): String { Thread.sleep(1000) return "Simulating I/O finished" } クラシカルな MVC では 1 request は終始 1 thread で処理される
@GetMapping("/io-heavy") suspend fun ioHeavy(): String { val result = virtualService.ioHeavyTask() return result } fun ioHeavyTask(): String { Thread.sleep(1000) return "Simulated I/O finished" } 1. Get request on VirtualThread#63 2. Start simulation on VirtualThread#63 3. End simulation on VirtualThread#63 4. Return response on VirtualThread#63 1 request ऴ࢝ಉ͡ virtual thread Ͱॲཧ͞ΕΔ