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
* This has the disadvantage that once an image is allocated, it is never freed until the display
	 * is disposed.  However, it has the advantage that the same image in different contribution managers
	 * is only ever created once.
	 */
	private ImageCache getImageCache() {
		ImageCache cache = globalImageCache;
		if (cache == null) {
			globalImageCache = cache = new ImageCache();
			Display display = Display.getDefault();
			if (display != null) {
				display.disposeExec(new Runnable() {
					public void run() {
						if (globalImageCache != null) {
							globalImageCache.dispose();
							globalImageCache = null;
						}
					}
				});
			}
		}
		return cache;
	}
	/**
	 * Returns the listener for SWT menu item widget events.
	 * 
	 * @return a listener for menu item events
	 */
	private Listener getMenuItemListener() {
		if (menuItemListener == null) {
			menuItemListener = new Listener() {