Virtual threads are ideal for handling a large number of short-lived threads without prioritizing low latency or high throughput. This is because virtual threads share the compute resources overall. In contrast, applications seeking high throughput often use long-lived platform threads as dedicated workers for spinning or polling workloads. In this scenario the platform threads are carefully orchestrated so as not to share the compute resources. This approach aligns well with the main use case for Java's BlockingQueue. In general, there is not much intersection between the two models.
Continue the conversation on GitHub