Bug 168806 [DataBinding] Realm.ensureWorkerThreadIsRunning() doesn't start a new thread
bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Realm.java
/**
	 * @return true if the caller is executing in this realm. This method must
	 *         not have side-effects (such as, for example, implicitly placing
	 *         the caller in this realm).
	 */
	abstract public boolean isCurrent();
	private Thread workerThread;
	LinkedList workQueue = new LinkedList();
	/**
	 * Causes the <code>run()</code> method of the runnable to be invoked from
	 * within this realm. If the caller is executing in this realm, the
	 * runnable's run method is invoked directly, otherwise it is run at the
	 * next reasonable opportunity using asyncExec.
	 * 
	 * @param runnable
	 */
	public void exec(Runnable runnable) {
		if (isCurrent()) {
			runnable.run();
		} else {
			asyncExec(runnable);
		}
	}
	/**
	 * Causes the <code>run()</code> method of the runnable to be invoked from
	 * within this realm at the next reasonable opportunity. The caller of this
	 * method continues to run in parallel, and is not notified when the
	 * runnable has completed.
	 * 
	 * @param runnable