[External] : Re: A new build and a new structured concurrency API
    Ignaz Birnstingl 
    ignazb at gmail.com
       
    Fri Nov 19 08:19:37 UTC 2021
    
    
  
Hi,
> The problem is that tasks are not observable entities. You can’t get a  
> “task dump”, and so the relationships among tasks are reflected in their  
> threads, but currently this can only be done if the thread is tied to a  
> single task.
But at any given time an ExecutorService's worker thread _is_ tied to a  
single task, or am I missing something? The only exception that comes to  
mind is a direct executor [1].
> As older applications would need to be changed somewhat, anyway, to  
> enjoy structured concurrency (as even the ExecutorService API were to  
> support structure, it would need to be changed to do so, and so the  
> use-sites would need to be changed as well), they might as well use the  
> new mechanism and spawn a virtual thread per task.
Ok I think this was a misunderstanding. I thought that instead of doing
try (var s = StructuredExecutor.open("foo", VirtualThread::new)) ...
you would do
try (var s = StructuredExecutor.open("foo", Executors.
newVirtualThreadPerTaskExecutor())) ...
but you could also do
// Limit parallelism to 5
try (var s = StructuredExecutor.open("foo", Executors.
newFixedThreadPool(5))) ...
-- Ignaz
[1]  
https://guava.dev/releases/19.0/api/docs/com/google/common/util/concurrent/MoreExecutors.html#directExecutor()
    
    
More information about the loom-dev
mailing list