src/share/classes/java/awt/EventQueue.java

Print this page

        

*** 45,54 **** --- 45,55 ---- import sun.awt.EventQueueItem; import sun.awt.AWTAccessor; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; + import java.util.concurrent.atomic.AtomicInteger; import java.security.AccessControlContext; import java.security.ProtectionDomain; import sun.misc.SharedSecrets;
*** 97,112 **** * @author David Mendenhall * * @since 1.1 */ public class EventQueue { ! ! // From Thread.java ! private static int threadInitNumber; ! private static synchronized int nextThreadNum() { ! return threadInitNumber++; ! } private static final int LOW_PRIORITY = 0; private static final int NORM_PRIORITY = 1; private static final int HIGH_PRIORITY = 2; private static final int ULTIMATE_PRIORITY = 3; --- 98,108 ---- * @author David Mendenhall * * @since 1.1 */ public class EventQueue { ! private static final AtomicInteger threadInitNumber = new AtomicInteger(0); private static final int LOW_PRIORITY = 0; private static final int NORM_PRIORITY = 1; private static final int HIGH_PRIORITY = 2; private static final int ULTIMATE_PRIORITY = 3;
*** 173,185 **** /* * Non-zero if a thread is waiting in getNextEvent(int) for an event of * a particular ID to be posted to the queue. */ ! private int waitForID; ! private final String name = "AWT-EventQueue-" + nextThreadNum(); private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.EventQueue"); static { AWTAccessor.setEventQueueAccessor( --- 169,181 ---- /* * Non-zero if a thread is waiting in getNextEvent(int) for an event of * a particular ID to be posted to the queue. */ ! private volatile int waitForID; ! private final String name = "AWT-EventQueue-" + threadInitNumber.getAndIncrement(); private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.EventQueue"); static { AWTAccessor.setEventQueueAccessor(
*** 1028,1038 **** } finally { pushPopLock.unlock(); } } ! final boolean detachDispatchThread(EventDispatchThread edt) { /* * This synchronized block is to secure that the event dispatch * thread won't die in the middle of posting a new event to the * associated event queue. It is important because we notify * that the event dispatch thread is busy after posting a new event --- 1024,1034 ---- } finally { pushPopLock.unlock(); } } ! final boolean detachDispatchThread(EventDispatchThread edt, boolean forceDetach) { /* * This synchronized block is to secure that the event dispatch * thread won't die in the middle of posting a new event to the * associated event queue. It is important because we notify * that the event dispatch thread is busy after posting a new event
*** 1047,1057 **** * sure if it's a possible scenario, though. * * Fix for 4648733. Check both the associated java event * queue and the PostEventQueue. */ ! if ((peekEvent() != null) || !SunToolkit.isPostEventQueueEmpty()) { return false; } dispatchThread = null; } AWTAutoShutdown.getInstance().notifyThreadFree(edt); --- 1043,1053 ---- * sure if it's a possible scenario, though. * * Fix for 4648733. Check both the associated java event * queue and the PostEventQueue. */ ! if (!forceDetach && (peekEvent() != null) || !SunToolkit.isPostEventQueueEmpty()) { return false; } dispatchThread = null; } AWTAutoShutdown.getInstance().notifyThreadFree(edt);