Is it possible to use RecursiveAction, for example, in conjunction with -- instead of the fork/join pool -- a pool of virtual threads (before I attempt a poorly-designed, custom effort)?
In Loom, can I use virtual threads for Recursive[Action/Task]?
813 Views Asked by HellishHeat At
1
There are 1 best solutions below
Related Questions in JAVA
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
- Redirect inside java interceptor
- Push toolbar content below statusbar
- Animation in Java on top of JPanel
- JPA - How to query with a LIKE operator in combination with an AttributeConverter
- Java Assign a Value to an array cell
Related Questions in FORK-JOIN
- Why does parallelStream not use the entire available parallelism?
- what does this forkjoinreuse and forkjoindeeprecursive mean?
- Wait in ForkJoin Pool ( Java )
- Detailed difference between Java8 ForkJoinPool and Executors.newWorkStealingPool?
- oozie fork join is not working after all the nodes are successful
- Parallel Sudoku Solver in Java
- Fork/Join Sudoku Solver
- Remove elements from LinkedHashMap in parallel
- Fork Join not sorting correctly
- Why are fork join tasks executed outside the common fork join pool threads?
- Forkjoin framework outputting different values each time its run
- Schedule a job to run at multiple of 2 seconds i.e 2,4,8,16,32 seconds
- ForkJoinFramework only uses two workers
- Multiple clock generation [Verilog] [Using fork-join]
- File I/O across processes in Linux?
Related Questions in PROJECT-LOOM
- Java 21 built-in HTTP client pins the carrier thread
- Apache Tomcat with virtual thread
- Detect Project Loom technology as missing or present JVM at runtime
- Is `Thread.sleep` different with virtual threads (fibers) in Project Loom for Java
- May I have Project Loom Clarified?
- Project loom: Why are virtual threads not the default?
- What exactly makes Java Virtual Threads better
- Virtual threads slower than single threads
- Project Loom: carrier pinning
- Issues in running virtual threads program on intellij with java19
- In Loom, can I use virtual threads for Recursive[Action/Task]?
- How does a Java virtual thread know when the thread is waiting?
- How to know which platform thread is carrying the virtual thread?
- Does the Java JIT ever optimize away recursive method calls?
- Synchronize block pinning virtual thread
Related Questions in STRUCTURED-CONCURRENCY
- Prevent thread switches if no suspension happens in the call stack
- How to properly cancel Swift async/await function
- Is there a way to get rid of a new concurrency warning on a @Published variable
- Kotlin: Difference between calling CoroutineScope.launch vs launch inside a coroutine
- How can I indicate I want the synchronous version of a function when in an async context in Swift?
- Why does a Task within a @MainActor not block the UI?
- TaskGroup limit amount of memory usage for lots of tasks
- How to pass the CoroutineScope to composed objects in Kotlin (Structured Concurrency)
- How can I know if a Java 19 Structured Concurrency StructuredTaskScope is shutdown ( canceled )?
- In Loom, can I use virtual threads for Recursive[Action/Task]?
- Swift - Not wait for async to return
- why is it legal to mutate an actor's nonSendable property?
- Where should we use "Task {}": in ViewModel or ViewController?
- Is there a way to co-ordinate coroutines using on Dispatchers with wait statements across codeblocks
- Is there a difference between using GlobalScope.launch and CoroutineScope().launch to launch a coroutine?
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)
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?
RecursiveActionis a subclass ofForkJoinTaskwhich is, as the name suggests and the documentation even says literally, anWhile the
ForkJoinPoolcan be customized with a thread factory, it’s not the standard thread factory, but a special factory for producingForkJoinWorkerThreadinstances. Since these threads are subclasses ofThread, they can’t be created with the virtual thread factory.So, you can’t use
RecursiveActionwith virtual threads. The same applies toRecursiveTask. But it’s worth rethinking what using these classes with virtual threads would gain you.The main challenge, to implement decomposition of your task into sub-task is on you, anyway. What these classes provide you, are features specifically for dealing with the Fork/Join pool and balancing the workload with the available platform threads. When you want to perform each sub-task on its own virtual thread, you don’t need this. So you can easily implement a recursive task with virtual threads without the built-in classes, e.g.
This example just doesn’t care about limiting the subdivision nor avoiding blocking
join()calls and it still performs well when running, e.g.PseudoTask.run(0, 1_000).join();You might notice that with larger ranges, the techniques known from the other recursive task implementations can be useful here too, where the sub-task is rather cheap.E.g., you may only submit one half of the range to another thread and process the other half locally, like
which makes a notable difference when running, e.g.
PseudoTask.run(0, 1_000_000).join();which will use only 1 million threads in the second example rather than 2 millions. But, of course, that’s a discussion on a different level than with platform threads where neither approach would work reasonably.Another upcoming option is the
StructuredTaskScopewhich allows to spawn sub-tasks and wait for their completionHere, the tasks do not wait for the completion of their sub-task but only the root task waits for the completion of all tasks. But this feature is in incubator state, hence, may take even longer than the virtual threads feature, to become production-ready.