![]() ![]() If the thread needs to block in say a Socket read then this releases the underlying kernel thread to do other work Or Did I just misunderstood the use case for Loom ? Thanks in advance How is it different from regular threads, at least for OS threads I can scale it to thousand to increase the throughput. So as far as I understand, if I have amount of OS threads equals to amount of CPU cores and unbounded amount of virtual threads, all OS threads will still wait for IO and Executor service won't be able to assign new work for Virtual threads because there are no available threads to execute it. Instead, virtual threads automatically give up (or yield) their carrier thread when a blocking call (such as I/O) is made. According to Ben Evans in the article Going inside Java’s Project Loom and virtual threads: Now let's say I switched a thread pool to use virtual threads instead. So if I have 200 hundred users reaching this endpoint, I need to create 200 threads each waiting for IO. So let's say I have a backend application that has single endpoint, the business logic behind this endpoint is to read some data using JDBC which internally uses InputStream which again will use blocking system call( read() in terms of Linux). So I understand the motivation, for standard servlet based backend, there is always a thread pool that executes a business logic, once thread is blocked because of IO it can't do anything but wait. I was investigating how Project Loom works and what kind of benefits it can bring to my company. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |