On 26/09/2025 10:36, Jianbin Chen wrote:
Hi everyone,

I hope you’re doing well. I have a question about a multi-tenant scenario. I want to create a dedicated thread pool for each tenant, and these pools will perform a lot of I/O (for example, database reads and writes). For this reason I’d like to use virtual threads. However, because virtual threads share platform threads under the hood, they cannot be fully isolated from one another.

Can you say a bit more about the multi-tenancy implementation? Is this a fork of the JDK with deep changes to isolate tenants, or is this isolation built with module layers or class loaders? If the latter then I assume it's an issue for the FJP common pool and all other system-wide resources.

So while the JDK doesn't have any support for tenancies, there is prototype/experimental support for custom schedulers in the loom repo [1]. That could be used to experiment with a having a virtual thread scheduler per tenant, or using a system-wide scheduler that dispatches the tasks for virtual threads in a tenant to the carriers in that tenant. It could be fun to work on. If you do explore this area then please come back with any results.

-Alan

[1] https://github.com/openjdk/loom/blob/fibers/loom-docs/CustomSchedulers.md

Reply via email to