RFR [9] Remove sun.misc.Queue and replace usages with standard Collections
Mandy Chung
mandy.chung at oracle.com
Fri Dec 11 22:33:51 UTC 2015
cc'ing awt-dev.
This change looks okay.
Mandy
> On Dec 11, 2015, at 9:22 AM, Chris Hegarty <chris.hegarty at oracle.com> wrote:
>
> More technical debt in sun.misc…
>
> Java SE has had support for Queues in Collections for many major releases,
> sun.misc.Queue seems to predate that. I cannot find any usages outside of the
> JDK, and just one in the JDK, AppletPanel. LinkedBlockingQueue appears to
> provide the necessary minimum functionality required by AppletPanel, FIFO
> blocking operations.
>
> The changes are quite small so I just included the diffs inline.
>
> Note: we could use either add(E) or offer(E) below, I don’t have a strong opinion
> either way.
>
> $ hg rm src/java.base/share/classes/sun/misc/Queue.java
>
> diff --git a/src/java.desktop/share/classes/sun/applet/AppletPanel.java b/src/java.desktop/share/classes/sun/applet/AppletPanel.java
> --- a/src/java.desktop/share/classes/sun/applet/AppletPanel.java
> +++ b/src/java.desktop/share/classes/sun/applet/AppletPanel.java
> @@ -38,6 +38,7 @@
> import java.security.*;
> import java.util.*;
> import java.util.Locale;
> +import java.util.concurrent.LinkedBlockingQueue;
> import sun.awt.AWTAccessor;
> import sun.awt.AppContext;
> import sun.awt.EmbeddedFrame;
> @@ -45,7 +46,6 @@
> import sun.misc.ManagedLocalsThread;
> import sun.misc.MessageUtils;
> import sun.misc.PerformanceLogger;
> -import sun.misc.Queue;
> import sun.security.util.SecurityConstants;
>
> /**
> @@ -247,8 +247,7 @@
> /**
> * AppletEvent Queue
> */
> - private Queue<Integer> queue = null;
> -
> + private LinkedBlockingQueue<Integer> queue = null;
>
> public synchronized void addAppletListener(AppletListener l) {
> listeners = AppletEventMulticaster.add(listeners, l);
> @@ -276,10 +275,10 @@
> synchronized(this) {
> if (queue == null) {
> //System.out.println("SEND0= " + id);
> - queue = new Queue<>();
> + queue = new LinkedBlockingQueue<>();
> }
> - Integer eventId = Integer.valueOf(id);
> - queue.enqueue(eventId);
> + boolean inserted = queue.offer(id);
> + assert inserted;
> notifyAll();
> }
> if (id == APPLET_QUIT) {
> @@ -303,8 +302,8 @@
> while (queue == null || queue.isEmpty()) {
> wait();
> }
> - Integer eventId = queue.dequeue();
> - return new AppletEvent(this, eventId.intValue(), null);
> + int eventId = queue.take();
> + return new AppletEvent(this, eventId, null);
> }
>
> boolean emptyEventQueue() {
>
> -Chris.
More information about the core-libs-dev
mailing list