To execute code on the UI thread, Runnables
are posted to the Display
class via two methods, syncExec()
and asyncExec()
. The syncExec()
method runs the code synchronously (that is, the caller blocks until the code has been run), while the asyncExec()
method runs the code asynchronously (that is, the caller continues while the code is run in the background).
The Display
class is SWT's handle to a monitor (so a runtime may have more than one Display
object, and each may have its own resolution). To get hold of an instance, call either Display.getCurrent()
or Display.getDefault()
. However, it's much better to get a Display
class from an associated view or widget. In this case, the Canvas
has an associated Display
.
Go to the
TickTock
thread inside thecreatePartControl()
method of theClockView
class.Inside the
run()
method, replace the call toclock.redraw()
with:clock.getDisplay().asyncExec(new Runnable() { public void run() { if(clock != null...