Bug 62401 [Actions] ReferenceCleanerThread in ActionContributionItem cause application can not exit normally.
When the standalone application exit, the display disposed, will call ReferenceCleanerThread.stopCleaning() method, it simply set the running field to false, but "reference = referenceQueue.remove();" in line 196 still blocking. And you must call System.exit() explicitlly to terminate the currently running Java Virtual Machine. so I think it is a bug. My env: XP home edition, jdk 1.4.2_04, and eclipse-SDK-I20040514-win32 Regards, Eric
bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java
*            <code>null</code>. It is expected that the keys are
             *            <code>Reference</code> instances. The values are
             *            expected to be <code>Image</code> objects, but it is
             *            okay if they are not.
             */
            private ReferenceCleanerThread(final ReferenceQueue referenceQueue,
                    final Map map) {
                if (referenceQueue == null) { throw new NullPointerException(
                        "The reference queue should not be null."); } 
                if (map == null) { throw new NullPointerException(
                        "The map should not be null."); } 
                this.referenceQueue = referenceQueue;
                this.map = map;
            }
            /**
             * Tells this thread to stop trying to clean up. This is usually run
             * when the cache is shutting down.
             */
            private final void stopCleaning() {
                this.running = false;
            }
            /**
             * Waits for new garbage. When new garbage arriving, it removes it,
             * clears it, and disposes of any corresponding images.
             */
            public final void run() {
                while (running) {
                    
                    Reference reference = null;
                    try {