<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <br>
    <br>
    <div class="moz-cite-prefix">On 04/12/2023 12:41, David Holmes
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:72662e8e-342a-4812-9f5d-4002d7810dd9@oracle.com">On
      1/12/2023 2:08 pm, Alex Menkov wrote:
      <br>
      <blockquote type="cite">On Thu, 30 Nov 2023 21:11:08 GMT, Chris
        Plummer <a class="moz-txt-link-rfc2396E" href="mailto:cjplummer@openjdk.org"><cjplummer@openjdk.org></a> wrote:
        <br>
        <br>
        <blockquote type="cite">I wasn't thinking in terms of the
          scheduler somehow no longer references the virtual thread, but
          instead the program no longer referencing the scheduler (and
          also not referencing the virtual thread).
          <br>
        </blockquote>
        <br>
        AFAIU unfinished unmounted virtual threads are referenced from
        other objects (they are parked on), so they can't be unreachable
        even is the application is not referencing them and the
        scheduler.
        <br>
      </blockquote>
      <br>
      There is (or was - there may be a property that affects this:
      trackAllThreads?) a scenario where a VT might park on a
      synchronization object which is not referenced from any other
      thread. The VT can never be unparked, and the sync object and the
      VT are reachable only from either other and so both can be GC'd.</blockquote>
    <br>
    That's right, the door is not closed to introducing <span style="color: rgb(29, 28, 29); font-family: Slack-Lato, Slack-Fractions, appleLogo, sans-serif; font-size: 15px; font-style: normal; font-variant-ligatures: common-ligatures; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">ephemeral
      threads in the future. Right now, virtual threads created directly
      with the Thread API remaining strongly reachable once started
      until they terminate. Virtual threads created in other containers
      (e.g. a thread-per-task ExecutorService) are kept reachable by the
      container.<br>
      <br>
      -Alan<br>
    </span>
  </body>
</html>