<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Menlo;
        panose-1:2 11 6 9 3 8 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:150828371;
        mso-list-template-ids:1736895886;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1
        {mso-list-id:1003633082;
        mso-list-template-ids:-1145565240;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2
        {mso-list-id:1157266020;
        mso-list-template-ids:1298422076;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3
        {mso-list-id:1646622406;
        mso-list-type:hybrid;
        mso-list-template-ids:-478661888 1709322106 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";
        mso-fareast-font-family:Aptos;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l4
        {mso-list-id:1744794675;
        mso-list-template-ids:248944596;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Courier New"">Thanks for the response! I should have taken more time to check out the EA build before messaging you. It has everything I wanted and more! All the examples I was messing around with felt great with
 the latest API.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">As for java.lang.Process example, I have reported
<a href="https://bugs.openjdk.org/browse/JDK-8342296">JDK-8342296</a> (should be enhancement, not bug) to hopefully create a more reliable paradigm.<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:13.5pt;background:#1F1F1F"><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC"> 
</span><span style="font-size:9.0pt;font-family:Menlo;color:#C586C0">try</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC"> (</span><span style="font-size:9.0pt;font-family:Menlo;color:#569CD6">var</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#9CDCFE">scope</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#D4D4D4">=</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#C586C0">new</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC"> StructuredTaskScope.</span><span style="font-size:9.0pt;font-family:Menlo;color:#DCDCAA">open</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">();<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:13.5pt;background:#1F1F1F"><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">     
</span><span style="font-size:9.0pt;font-family:Menlo;color:#569CD6">var</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#9CDCFE">process</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#D4D4D4">=</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#C586C0">new</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">
</span><span style="font-size:9.0pt;font-family:Menlo;color:#DCDCAA">ProcessBuilder</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">(command).</span><span style="font-size:9.0pt;font-family:Menlo;color:#DCDCAA">start</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">())
 {<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:13.5pt;background:#1F1F1F"><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">    ...
</span><span style="font-size:9.0pt;font-family:Menlo;color:#6A9955">// scope.fork to read/write from stdin, stdout, stderr</span><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:13.5pt;background:#1F1F1F"><span style="font-size:9.0pt;font-family:Menlo;color:#CCCCCC">  }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">This still requires `process` to be defined second so that it is closed first. When Process.close() is called it will destroy the child process and the OS will close associated filedescriptors so
 the VirtualThreads can unblock to read EOF.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Is there anything else I could be doing to help push the story of Process cancellation/interruption? i.e. can we have the Process to expose getInputChannel/getOutputChannel/getErrorChannel backed
 by FileChannel and make similar changes to FileChannel as SocketChannel so that interrupting a virtual thread blocked on a read/write will unpark the thread.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">P.S. Alan, I enjoyed watching your talk on the Devoxx/Java Youtube channels. It’s what inspired me to reach out.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="color:black">From:
</span></b><span style="color:black">Alan Bateman <alan.bateman@oracle.com><br>
<b>Date: </b>Wednesday, October 16, 2024 at 9:06</span><span style="font-family:"Arial",sans-serif;color:black"> </span><span style="color:black">AM<br>
<b>To: </b>Winkelman, Kyle G <kyle.winkelman@optum.com>, loom-dev@openjdk.org <loom-dev@openjdk.org><br>
<b>Subject: </b>Re: JEP 480: Structured Concurrency (Third Preview) Feedback</span><span style="font-size:12.0pt;color:black"><o:p></o:p></span></p>
</div>
<p><strong><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:red">Caution: External email.</span></strong><strong><span style="font-size:9.0pt;font-family:"Arial",sans-serif"> Do not open attachments or click on links if you do not recognize
 the sender.</span></strong></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><br>
Thanks for taking the time to write a mail on your experiences.<br>
<br>
On 15/10/2024 18:13, Winkelman, Kyle G wrote:<br>
<br>
</p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">Things that felt strange or annoying:</span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l2 level1 lfo2"><span style="font-family:"Courier New"">When subclassing StructuredTaskScope I always have to @Override `join` and `joinUntil` to return my subclass type to provide a fluent api.</span><o:p></o:p></li></ul>
</div>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt"><br>
When doing a custom policy, and the subclass defines methods to make available the outcome, then you do need to override the join method with a covariant return type to make it possible for use sites to make use of method invocation chaining. The override will
 likely just do super.join() so shouldn't be too much of a burden, just a bit annoying.<br>
<br>
There is an update to the API [1] in the EA builds and draft JEP that moves the policy to a side object with a type parameter on STS for the return from join. That takes the burden of subclassing off the table.<br>
<br>
<br>
<br>
<br>
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l4 level1 lfo3"><span style="font-family:"Courier New"">When subclassing StructuredTaskScope @Override `handleComplete` I find myself wanting to write a switch expression on Subtask#state(), but if
 I do, I always need to have a case for UNAVAILABLE and throw IllegalStateException.</span><o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l4 level1 lfo3"><span style="font-family:"Courier New"">Using StructuredTaskScope (no subclassing) feels weird because you must decide to use either the `<>` diamond operator to allow any types or
 define a type T for restricting subtasks (makes you wonder if you are using it correctly). Whereas, both ShutdownOnFailure and ShutdownOnSuccess just feel right to use.</span><o:p></o:p></li></ul>
</div>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt">The code example you included had subtasks that yield results of different types. There are cases where the tasks will all return something of the same type. Using STS directly is the equivalent of "no policy"
 so closer to the ES.invokeAll in that regard. The default in the updated API is changed to work like ShutdownOnFailure in the existing API because this is likely the 90% case.<br>
<br>
<br>
<br>
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo4"><o:p> </o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo4"><span style="font-family:"Courier New"">In IntelliJ the Javadoc of StructuredTaskScope doesn’t seem to properly format and makes it very difficult to read (probably an issue with IntelliJ).</span><o:p></o:p></li></ul>
</div>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt">I don't know what this except to note that the API docs have several code snippets, maybe the IDE version you are using can't handle this.<br>
<br>
<br>
<br>
<o:p></o:p></span></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo5"><span style="font-family:"Courier New"">Blocking IO is not interruptible and this can cause confusion when the scope won’t close in a timely manner even though something may have already
 thrown an exception (probably falls under the Non-Goal of thread cancellation mechanism). e.g. 2 calls to fork one reading a short file and the other reading an long file, short one fails, if I don’t do something to close the long file stream I will read the
 whole thing (making ShutdownOnFailure not really live up to its name).</span><o:p></o:p></li></ul>
</div>
</blockquote>
<p class="MsoNormal"><span style="font-size:12.0pt"><br>
Our expectation is that STS will be mostly used for fan out to network services. The blocking Socket methods were re-specified in JDK 19 so that interrupt closes the Socket, similar to interruptible channels, when used in the virtual threads. SocketChannel
 is an interruptible channel so okay there, even when configured blocking.<br>
<br>
Your example launches sub-Processes which doesn't have a good story for cancellation/interrupt. I hope in time that it will get attention.<br>
<br>
-Alan<br>
<br>
<br>
[1] </span><a href="https://urldefense.com/v3/__https:/download.java.net/java/early_access/loom/docs/api/java.base/java/util/concurrent/StructuredTaskScope.html__;!!IqUcNYopQPk7!Lzgrd_5dQk7nSMKRjf_B6OgtuwLGbWr4L41z1szNvb7Y-HW5vx1sILpVp9-IDXiHwi2SjXODAWrTbXKFDb_dv3AjOw$"><span style="font-size:12.0pt">https://download.java.net/java/early_access/loom/docs/api/java.base/java/util/concurrent/StructuredTaskScope.html</span></a><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>

<DIV>
This e-mail, including attachments, may include confidential and/or<BR>
proprietary information, and may be used only by the person or entity<BR>
to which it is addressed. If the reader of this e-mail is not the intended<BR>
recipient or intended recipient’s authorized agent, the reader is hereby<BR>
notified that any dissemination, distribution or copying of this e-mail is<BR>
prohibited. If you have received this e-mail in error, please notify the<BR>
sender by replying to this message and delete this e-mail immediately.<BR>
</DIV></body>
</html>