JDK-8297962 review ?

Laurent Bourgès bourges.laurent at gmail.com
Wed Jan 29 06:57:36 UTC 2025


Hi,

My main concerns consists in avoiding any deadlock due to appkit (main
thread), EDT, flusher & disposer + user threads...

Instead of new lock.wait(), why not rely on other existing patterns like
LWCToolkit.invokeAndWait() ?
It implements non-blocking rendez-vous to avoid appkit or EDT threads to
wait but perform other pending events meanwhile.

More details later,
Laurent

Le mar. 28 janv. 2025, 21:19, Stanimir Stamenkov <stanio at yahoo.com> a
écrit :

> Tue, 28 Jan 2025 11:32:41 -0800, /Philip Race/:
>
> > why would the state change never happens / gets lost ?
>
> Is it possible the state changes after the 'if', and before the lock is
> obtained?
>
>          if (peer.getState() != state) {
>              synchronized (lock) {
>
> Maybe the the 'if' test should be re-evaluated inside the synchronized
> block, first or maybe using a CountDownLatch is more suitable:
>
>          CountDownLatch latch = new CountDownLatch(1);
>          WindowStateListener wsl = new WindowStateListener() {
>              public void windowStateChanged(WindowEvent e) {
>                  if (e.getNewState() == state) {
>                      latch.countDown();
>                  }
>              }
>          };
>
>          target.addWindowStateListener(wsl);
>          for (int retries = 5; retries > 0
>                  && peer.getState() != state; retries--) {
>              try {
>                  latch.await(1, TimeUnit.SECONDS);
>              } catch (InterruptedException ie) {
>                  Thread.currentThread().interrupt();
>                  break;
>              }
>          }
>          target.removeWindowStateListener(wsl);
>
> > The code wants a specific state (NORMAL). What if the window is
> > transitioned to some other state instead ?
> > So there's a couple of possibilities.
>
> --
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20250129/d1098f6f/attachment.htm>


More information about the client-libs-dev mailing list