<div dir="ltr">I did try to inherit from StructuredTaskScope and create our implementation:<div><br></div><div>public class SameThread extends StructuredTaskScope<Object> {<br> @Override<br> public <U> Subtask<U> fork(Callable<? extends U> task) {<br> try {<br> return new SameThreadTask(task);<br> } catch (Exception e) {<br> throw new RuntimeException(e);<br> }<br> }<br>}<br><br>class SameThreadTask<T> implements StructuredTaskScope.Subtask<Object> {<br> private Callable<Object> callable;<br><br> public SameThreadTask(Callable<Object> callable) {<br> this.callable = callable;<br> }<br><br> @Override<br> public Callable<?> task() {<br> return callable;<br> }<br><br> @Override<br> public State state() {<br> return null;<br> }<br><br> @Override<br> public Object get() {<br> try {<br> return callable.call();<br> } catch (Exception e) {<br> throw new RuntimeException(e);<br> }<br> }<br><br> @Override<br> public Throwable exception() {<br> return null;<br> }<br>}</div><div><br></div><div>However, StructuredTaskScope.Subtask is sealed, so, we cannot inherit from it</div><div><br></div><div>> A ThreadFactory can decorate the</div>> Runnable to use a Semaphore to limit concurrency and a single permit<br>> would ensure the subtasks execute sequentially<div><br></div><div>I will try that, however, seems quite complex anyway.</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">El mié, 26 mar 2025 a las 3:37, Alan Bateman (<<a href="mailto:alan.bateman@oracle.com">alan.bateman@oracle.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 25/03/2025 20:35, Daniel Andres Pelaez Lopez wrote:<br>
><br>
> :<br>
><br>
> Challenge:<br>
><br>
> Testing JEP 499: Structured Concurrency (Third Preview) we couldn't <br>
> find an easy way to do this, perhaps we need to create a new <br>
> StructuredTaskScope implementation as we do with Executor interface? <br>
> or should we pass a custom ThreadFactory that only creates one thread?<br>
<br>
A new virtual thread is started to execute each subtask. So no <br>
equivalent of a "caller runs" policy. A ThreadFactory can decorate the <br>
Runnable to use a Semaphore to limit concurrency and a single permit <br>
would ensure the subtasks execute sequentially. Would that help what you <br>
are doing?<br>
<br>
-Alan<br>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse;color:rgb(136,136,136)">Daniel Andrés Pelaez López<br></span><font color="#888888"><span style="font-size:12.8px">Master’s Degree in IT Architectures, Universidad de los Andes.</span></font><br><font color="#888888"><span style="font-size:12.8px">Software Construction Specialist, Universidad de los Andes.</span></font><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse;color:rgb(136,136,136)">Bachelor's Degree in Computer Sciences, Universidad del Quindio.</span></div><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse;color:rgb(136,136,136)">e. <a href="mailto:estigma88@gmail.com" target="_blank">estigma88@gmail.com</a></span></div></div></div></div></div>