Bug 168153 [DataBinding] Simplify the management of the default Realm
In the bug where Realms where born there was talk of making the setting of the Realm a little more foolproof. Currently when setting the Realm the developer needs to remember to retrieve the current Realm and to set it back in a finally block to be a good citizen. I think Boris spoke of something like the following to remedy this... Realm.setDefault(myRealm, new Runnable() { public void run() { //do stuff with myRealm as default } }); I've been finding myself writing a method that does just this in my own code. I think this should be added to Realm to ensure that the default realm is being set and reset correctly.
bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/observable/Realm.java
* @param runnable
	 */
	public void asyncExec(Runnable runnable) {
		synchronized (workQueue) {
			ensureWorkerThreadIsRunning();
			workQueue.addLast(runnable);
			workQueue.notifyAll();
		}
	}
	/**
	 * 
	 */
	private void ensureWorkerThreadIsRunning() {
		if (workerThread == null) {
			workerThread = new Thread() {
				public void run() {
					try {
						while (true) {
							Runnable work = null;
							synchronized (workQueue) {
								while (workQueue.isEmpty()) {
									workQueue.wait();
								}
								work = (Runnable) workQueue.removeFirst();
							}
							syncExec(work);
						}
					} catch (InterruptedException e) {
						
					}