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
final HashableWeakReference key = new HashableWeakReference(
                    descriptor, imageReferenceQueue);
            final Object value = imageMap.get(key);
            if (value instanceof Image) {
                key.clear();
                return (Image) value;
            }
            
            final Image image = descriptor.createImage();
            imageMap.put(key, image);
            return image;
        }
        /**
         * Returns the image to display when no image can be found, or none is
         * specified. This image is only disposed when the cache is disposed.
         * 
         * @return The image to display for missing images. This value will
         *         never be <code>null</code>.
         */
        private final Image getMissingImage() {
            if (missingImage == null) {
                missingImage = getImage(ImageDescriptor
                        .getMissingImageDescriptor());
            }
            return missingImage;
        }
    }
	private static ImageCache globalImageCache;
	private static boolean USE_COLOR_ICONS = true;
	/**