Is there a way to know which platform thread is carrying the current virtual thread or pin a virtual thread to a platform thread and get its threadlocal in JDK19? I want to reuse some objects in virtual threads, something like sync.Pool in Golang.
How to know which platform thread is carrying the virtual thread?
449 views Asked by AudioBubble At
1
There are 1 answers
Related Questions in PROJECT-LOOM
- Logback: availability of MDCs in forks created inside a StructuredTaskScope
- Java 21 structured concurrency, need predictable subtask exception ordering
- What really happens under the hood when a virtual thread is created?
- How to call mysql in virtual threads
- How to yield the virtual thread?
- Why do Java 21 virtual threads need less memory than platform threads?
- Logback thread was blocked with virtual thread envrionment
- Should virtual thread die fast?
- ExecutionCompletionService hangs when used with Project loom
- Apache Tomcat with virtual thread
- Java 21 built-in HTTP client pins the carrier thread
- How virtual thread is parking?
- What happened to Channels in project Loom?
- Will java's virtual thread be useful for Grpc bidirectional stream application?
- How to inspect Virtual Threads on a running JVM?
Related Questions in JAVA-19
- Excluding a duplicate package in gradle
- About project Lombok's future
- Exception: Cannot invoke getLastRowNum()" as "sheet" is null
- Docker Image for maven with OpenJDK 19 is missing
- @Component on a @ConfigurationProperties class causing error with spring boot application
- Using Java.io.file, subdirectories can be found using one way but not another
- Why does my custom ExecutorService bean not call the shutdown method in Java 19 with SpringBoot?
- Thread.currentThread().getName() returns empty string "" for Virtual Threads created via Executors.newVirtualThreadPerTaskExecutor()
- Exception in Application start method JavaFX
- How to mock/spy class java.util.concurrent.ThreadLocalRandom
- Why can't I compile jsp?
- Unable to send email from behind a firewall/proxy
- Failed to get the response in Swagger 3 (open api) while using Java 19 and Spring Boot 3.0.x
- unsupported class file major version 63
- Cannot resolve symbol 'name' in pattern-matching switch expressions
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
From JEP 425, the spec for virtual threads in JDK 19:
So, no, I don't think there is any way to determine which platform thread is running a virtual thread (i.e. in Java code; there are ways to observe this via tooling such as the Java Flight Recorder).
Pinning a thread is something to be avoided [1], and so I doubt there is any way to explicitly do that. From the same JEP 425:
Given the above quote, and various presentations/documentation to that effect, I would be very surprised if there were a way to pin a thread explicitly via an API.
Finally, regarding ThreadLocals, there is a discussion at [2] where the Project Loom team mentions the dangers of caching expensive objects in ThreadLocals (note that they do not mention access to the underlying platform thread). I'm not familiar with the Go construct but you may want to consider JEP 429 on Extent-Locals.
[1] - see 36m20s here, a presentation by the Project Loom team
[2] - see 35m01s here, the same presentation by the Project Loom team