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
* never <code>null</code>. This is the queue for
         * <code>imageMap</code>.
         */
        private final ReferenceQueue imageReferenceQueue = new ReferenceQueue();
        /**
         * The image to display when no image is available. This value is
         * <code>null</code> until it is first used.
         */
        private Image missingImage = null;
        
        /**
         * Constructs a new instance of <code>ImageCache</code>, and starts a
         * couple of threads to monitor the reference queues.
         */
        private ImageCache() {
            greyCleaner = new ReferenceCleanerThread(greyReferenceQueue,
                    greyMap);
            imageCleaner = new ReferenceCleanerThread(imageReferenceQueue,
                    imageMap);
            
            greyCleaner.start();
            imageCleaner.start();
        }
        /**
         * Cleans up all images in the cache. This disposes of all of the
         * images, and drops references to them. This should only be called when
         * all of the action contribution items are disappearing.
         */
        private final void dispose() {